import Debug.Trace
collatz 1 = 1
collatz n = if even n
then collatz (n `div` 2)
else collatz (3*n+1)
我必须使用Trace and Show来查看n的中期结果,但我真的不知道如何。如果有人可以帮助我调试我的代码,那将是惊人的。
答案 0 :(得分:4)
在定义的顶部添加一行,如下所示:
import Debug.Trace
collatz n | trace ("collatz called with " ++ show n) False = undefined
collatz 1 = 1
collatz n = if even n
then collatz (n `div` 2)
else collatz (3*n+1)
这项技术(在上面的第一行添加)是通用的-它可与任何函数定义一起使用,并且不需要触摸其余代码。
(不相关:我还建议您还为collatz
添加类型签名。在开始编写任何函数之前,这样做是一个好习惯。)