входящий в сообщество Ocaml, я пытаюсь изучить немного Haskell. Переход идет неплохо, но я немного путаюсь с отладкой. Я использовал (много) "printf" в своем коде ocaml, чтобы проверить некоторые промежуточные значения или как флаг, чтобы увидеть, где вычисление точно потерпело неудачу.
Так как printf является действием IO, мне нужно поднять весь мой код haskell внутри монады IO, чтобы иметь возможность такого отладки? Или есть лучший способ сделать это (я действительно не хочу делать это вручную, если его можно избежать)
Я также нашел функцию trace: http://www.haskell.org/haskellwiki/Debugging#Printf_and_friends который кажется именно тем, что я хочу, но я не понимаю его типа: нет IO в любом месте! Может ли кто-нибудь объяснить мне поведение функции трассировки?