9

我想通过打印一些东西来调试我的程序

例如,

isPos n 
    | n<0       = False
    | otherwise = True

我想要类似的东西:

isPos n 
    | n<0       = False AND print ("negative")
    | otherwise = True  AND print ("positive")

可以在 Haskell 中进行吗?

4

2 回答 2

20

正如 hammar 所说,traceDebug.Trace模块中使用。我发现有用的提示是定义函数debug

debug = flip trace

然后你可以做

isPos n
  | n < 0     = False `debug` "negative"
  | otherwise = True  `debug` "positive"

这样做的好处是在开发过程中很容易启用/禁用调试打印。要删除调试打印,只需注释掉该行的其余部分:

isPos n
  | n < 0     = False -- `debug` "negative"
  | otherwise = True  -- `debug` "positive"
于 2012-09-23T12:17:45.183 回答
18

使用Debug.Trace.trace.

import Debug.Trace

isPos n 
  | n < 0     = trace "negative" False
  | otherwise = trace "positive" True 
于 2012-09-23T06:50:03.273 回答