跟踪haskell列表理解?

gut*_*rie 2 haskell list-comprehension

有没有简单的方法来跟踪Haskell中List-comprehension的评估?它们非常紧凑,但也可能使它们难以调试.

Tho*_*son 6

列表理解相当简洁,通常易于理解.如果您对结果中未显示特定元素的原因感到困惑,您应该能够手动测试它.如果元素出现了您不期望的相同的事情.我从来不需要比GHCi更多的调试,但如果答案不满足你......

列表理解只是List monad的简写.如果将列表推导扩展为do表示法并添加显式trace语句(或使用GHCi调试器`),您应该能够快速发现错误.


Dan*_*Dan 5

我会用Debug.trace.像这样的东西:

[trace ("comprehending " ++ show x) (x + 1) | x <- [1..10]]
Run Code Online (Sandbox Code Playgroud)

  • 这很丑陋,人们不想过分依赖它,但有时一点调试输出正是医生所要求的. (2认同)
  • 真的够了.我经常发现`trace`对于调试情况最有用,我不应该首先考虑这些情况,但这并不意味着当我这样做时我不会使用它! (2认同)