Что лучше - использовать монаду состояния или передавать состояние рекурсивно?

StackOverflow https://stackoverflow.com/questions/1456479

  •  12-09-2019
  •  | 
  •  

Вопрос

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

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

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

Спасибо,

Крис.

Это было полезно?

Решение

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top