我来自Ocaml社区,现在正在学习Haskell。转换进展顺利,但在调试方面有些困惑。我曾经在我的Ocaml代码中放置(很多)"printf"语句以检查一些中间值,或者作为标志来确定计算到哪里失败。
由于printf是一个IO操作,我是否需要将所有的Haskell代码提升到IO单子内,才能进行这种调试?或者有更好的方法来做到这一点(如果可以避免手工操作,我真的不想这样做)
我还发现了trace函数: http://www.haskell.org/haskellwiki/Debugging#Printf_and_friends 它似乎正是我想要的,但我不理解它的类型:没有任何的IO! 有人能解释一下trace函数的行为吗?
trace
仅用于调试,如果您将其用于“真正”的逻辑,社区将会避开它。 - luqui