трассировка понимания списка haskell? - PullRequest
2 голосов
/ 25 июня 2011

Есть ли какой-нибудь простой способ отследить оценку понимания списка в Haskell? Они очень компактны, но это также может затруднить их отладку.

Ответы [ 2 ]

6 голосов
/ 25 июня 2011

Понимание списка довольно лаконично и обычно легко для понимания. Если вы не уверены, почему конкретный элемент не отображается в результате, вы сможете проверить его вручную. То же самое, если появляется элемент, который вы не ожидаете. Мне никогда не требовалось больше отладки, чем GHCi, но если этот ответ вас не устраивает ...

Понимание списка - это просто сокращение для монады List. Если вы расширите понимание списка в нотацию do и добавите явные операторы trace (или воспользуетесь отладчиком GHCi`), вы быстро сможете обнаружить, что не так.

5 голосов
/ 25 июня 2011

Я бы использовал Debug.trace. Как то так:

[trace ("comprehending " ++ show x) (x + 1) | x <- [1..10]]
...