我是SML的初学者,但它的语法对我来说还不是很友好(我是C#程序员)。所以这个问题在你看来可能是愚蠢的。
所以,我有一个带有模式匹配的递归函数(例如factorial),我将调试它,我无法得到如何将print(Int.toString(x))
添加到第二种情况。在类C语言中它是:
function fact(x) {
if (x == 0) {
return 1;
}
print(x);
return x*fact(x-1);
}
如何将print
添加到SML版本,第二种情况?
fun fact 0 = 1
| fact x = x*fact(x-1);
提前谢谢
答案 0 :(得分:1)
您需要在块周围加上括号,并使用分号分隔其中的各个表达式:
fun fact 0 = 1
| fact x = (print (Int.toString x);
x * fact (x-1));
请注意,不需要在x
周围添加括号来调用它上面的函数。