如何在模式匹配构造内部的 SML 中制作块
How to make a block in SML inside of pattern matching construction
我是 SML 的初学者,它的语法对我来说仍然不是很友好(我是 C# 程序员)。所以这个问题在你看来可能很愚蠢。
因此,我有一个带有模式匹配(例如阶乘)的递归函数,我将对其进行调试,但我不知道如何将 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);
提前致谢
您需要在块周围加上括号并使用分号分隔其中的各个表达式:
fun fact 0 = 1
| fact x = (print (Int.toString x);
x * fact (x-1));
请注意,没有必要在 x
周围加上括号,只是为了在其上调用函数。
我是 SML 的初学者,它的语法对我来说仍然不是很友好(我是 C# 程序员)。所以这个问题在你看来可能很愚蠢。
因此,我有一个带有模式匹配(例如阶乘)的递归函数,我将对其进行调试,但我不知道如何将 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);
提前致谢
您需要在块周围加上括号并使用分号分隔其中的各个表达式:
fun fact 0 = 1
| fact x = (print (Int.toString x);
x * fact (x-1));
请注意,没有必要在 x
周围加上括号,只是为了在其上调用函数。