有没有简单的方法来跟踪Haskell中List-comprehension的评估? 它们非常紧凑,但也可能使它们难以调试。
答案 0 :(得分:6)
列表理解相当简洁,通常易于理解。如果您对结果中未显示特定元素的原因感到困惑,您应该能够手动测试它。如果元素出现了您不期望的相同的事情。我从来不需要比GHCi更多的调试,但如果答案不满足你...
列表理解只是List monad的简写。如果将列表推导扩展为do
表示法并添加显式trace
语句(或使用GHCi调试器`),您应该能够快速发现错误。
答案 1 :(得分:5)
我会使用Debug.trace
。像这样:
[trace ("comprehending " ++ show x) (x + 1) | x <- [1..10]]