【发布时间】:2010-08-23 10:15:31
【问题描述】:
来自 Ocaml 社区,我正在尝试学习一点 Haskell。过渡进展顺利,但我对调试有点困惑。我曾经在我的 ocaml 代码中放置(很多)“printf”,以检查一些中间值,或者作为标志来查看计算究竟在哪里失败。
由于 printf 是一个 IO 动作,我是否必须解除 IO monad 中的所有haskell 代码才能进行这种调试?或者有没有更好的方法来做到这一点(如果可以避免的话我真的不想手动做)
我还发现了 trace 功能: http://www.haskell.org/haskellwiki/Debugging#Printf_and_friends 这似乎正是我想要的,但我不明白它的类型:任何地方都没有 IO ! 有人可以解释一下跟踪函数的行为吗?
【问题讨论】:
-
需要注意的是,
trace仅用于调试,如果您将其用于“真实”逻辑,则社区会避开它。
标签: debugging haskell trace printf-debugging