我可以在每次递归时打印SML吗?

时间:2013-01-26 12:16:56

标签: sml

我想知道是否有任何方法可以让SML打印每个递归出来?我对我编写的函数有问题,这将非常有用!

如果重要的话,我正在使用Emacs。

谢谢!

2 个答案:

答案 0 :(得分:3)

你可以在sml中连续使用几个表达式,在它们之间放置分号并用括号括起整个事物,如下所示:

(exp1;exp2;exp3)

最后一个表达式的结果是唯一保留的结果 - 其他表达式被丢弃。但是,你可以使用带有副作用的表达式,例如print,然后是你真正想要做的事情。

fun useless x = (print "Hey, there\n";x+2)

答案 1 :(得分:1)

你的意思是这样吗?

fun annotatedFold _ y []        = (print "base case\n"; y)
  | annotatedFold f y (x :: xs) = (print "recursive case\n"; annotatedFold (f x y) xs)

(尽管如此,我会尽量将打印逻辑放在f中,如果可能的话)