如何在代码中使用跟踪来显示中期结果

时间:2018-10-18 12:07:14

标签: haskell

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的中期结果,但我真的不知道如何。如果有人可以帮助我调试我的代码,那将是惊人的。

1 个答案:

答案 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添加类型签名。在开始编写任何函数之前,这样做是一个好习惯。)