Я новичок в Haskell и медленно понял, что что-то не так с существованием Monad терпит неудачу. Real World Haskell предупреждает об использовании ( "Еще раз рекомендуем вам всегда избегать использования сбоя!" ). Я только что заметил сегодня, что Росс Патерсон назвал его "бородавкой, а не образцом дизайна" еще в 2008 году (и, похоже, получил довольно определенное согласие в том, что нить).
Во время просмотра Dr Ralf Lämmel поговорите о сути функционального программирования, я начал понимать возможное напряжение, которое могло привести к тому, что Монада потерпит неудачу. В лекции Ральф говорит о добавлении различных монадических эффектов к базовому монадическому парсеру (каротаж, состояние и т.д.). Многие из эффектов потребовали изменения в базовом анализаторе, а иногда и в используемых типах данных. Я полагал, что добавление "неудачи" ко всем монадам могло быть компромиссом, потому что "провал" настолько распространен, и вы хотите как можно больше избегать изменений в "базовом" парсере (или любом другом). Конечно, какой-то "провал" имеет смысл для парсеров, но не всегда, скажем, put/get of state или ask/local Reader.
Сообщите мне, если я могу быть на неправильном пути.
Должен ли я избегать использования Monad? Каковы альтернативы Монаду? Существуют ли альтернативные библиотеки монад, которые не включают эту "бородавку"? Где я могу больше узнать об истории вокруг этого проектного решения?