Лучше использовать государственную монаду или рекурсивно передавать государственную? - PullRequest
9 голосов
/ 21 сентября 2009

Я только изучаю Haskell и пытаюсь найти самый идиоматический способ реализации алгоритма прямой видимости.

Демонстрационный код, который я нашел, использует монаду состояний, но мне она кажется проще (Я просто новичок), чтобы передать состояние рекурсивно.Что мне здесь не хватает?Есть проблемы с производительностью?

Найти код по адресу: http://www.finalcog.com/bresenham-algorithm-idiomatic-haskell

Спасибо,

Крис.

Ответы [ 3 ]

12 голосов
/ 22 сентября 2009

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

Я нахожу монаду состояния аккуратной для инкапсуляции изменений состояния, совершенно очевидно, какая часть вашего кода является состоящей из состояний (т.е. изменяется или зависит от состояния) w.r.t остальное чистое вещество.

11 голосов
/ 22 сентября 2009

Для больших программ лучше скрыть состояние прохождения сантехники в монаде. Тогда риск ошибки меньше.

3 голосов
/ 07 мая 2012

Преимущество использования монады для передачи состояния вместо прямой передачи состояния состоит в том, что для монад можно определить множество полезных комбинаторов.

...