まず、これは意味がありません。には 3 つの部分がすべて含まれているif-then-else
必要がelse
ありますif-then
。
次に、複数のステートメント ( で区切られた;
) は、副作用がある場合にのみ役立ちますが、副作用はありません。コードを次のように変更できます
fun function (a, b) =
( if size a < 2 then a ^ " " else
if size a < 3 then a ^ " " else
a
; if size b < 2 then b ^ " " else
if size b < 3 then b ^ " " else
b
)
しかし、最初のステートメントの結果は破棄され、まったく役に立ちません。
おそらく、あなたはもっと似たものが欲しい
fun padLeft (n, a) =
if size a < n
then a ^ CharVector.tabulate(n - size a, fn _ => #" ")
else a
fun function1 (a, b) = (padLeft (3, a), padLeft (3, b))
fun function2 (a, b) = (print (padLeft (3, a)); print (padLeft (3, b)))
wherefunction1
は両方の入力を使用してペアを返し、function2
戻りますunit
が、両方の入力を使用して目に見える副作用があります。