Следует ли мне избегать использования сбоя Monad?

Я новичок в Haskell и постепенно начинаю понимать, что что-то не так с существованием Monad fail. Real World Haskell предостерегает от его использования («Еще раз, мы рекомендуем вам почти всегда избегать использования fail!»). Я только что заметил сегодня, что Росс Патерсон назвал это «бородавкой, а не шаблоном проектирования» еще в 2008 (и, похоже, пришел к некоторому согласию в этой беседе).

Наблюдая за тем, как доктор Ральф Леммель говорит о сути функционального программирования , я начал понимать возможное напряжение, которое могло привести к до сбоя монады. В лекции Ральф говорит о добавлении различных монадических эффектов к базовому монадическому синтаксическому анализатору (ведение журнала, состояние и т. д.). Многие из эффектов требовали изменений в базовом синтаксическом анализаторе, а иногда и в используемых типах данных. Я полагал, что добавление «сбой» для всех монад мог быть компромиссом, потому что «сбой» настолько распространен и вы хотите, насколько это возможно, избежать изменений «базового» парсера (или чего-то еще). Конечно, для парсеров имеет смысл какой-то «сбой», но не всегда, скажем, put / get of State или ask / local of Reader.

Дайте мне знать, если я ошибусь.

Следует ли мне избегать использования сбоя монады? Каковы альтернативы сбоям монады? Существуют ли альтернативные библиотеки монад, которые не включают эту "бородавку проектирования"? Где Могу я узнать больше об истории этого дизайнерского решения?

34
задан Ry- 7 January 2014 в 15:03
поделиться