0
這種語言的語法很混亂。打印語句導致錯誤?
fun bar a =
print (Int.toString a);
0
編譯。不知道爲什麼emacs縮進0。
fun bar a =
print (Int.toString a)
0
引發錯誤。
Error: operator is not a function [tycon mismatch]
operator: unit
in expression:
(print (Int.toString a)) 0
fun foo a =
if a < 0
then
0
else
0
編譯。
fun foo a =
if a < 0
then
print (Int.toString a);
0
else
0
將引發錯誤。
syntax error: replacing SEMICOLON with EQUALOP
Wat?
我對此沒有任何意義。
混淆的一部分可能會追溯到某些標準書籍(如Ullman's傾向於濫用分號)的方式。很容易得到這樣的印象:分號主要是終止符而不是分隔符。 –
有沒有辦法使用print語句作爲if/else分支中的最後一個語句,而不是從那個分支返回()?這種語言感覺像一個緊身胸衣... –
@lotolmencre'如果是真的,然後打印(「foo」)else()'。 'print'語句已經是一個單元函數。你總是可以用另一個函數包裝這個'fun printIfTrue(test,val)= if test然後print(val)else()'。 – eatonphil