Чистый язык использует уникальность типов для обработки ввода / вывода в чисто функциональном назначении. Почему комитет Хаскелла пошел с монадами вместо этого? Были ли другие предложения по обращению с государством, которые комитет расследовал, но отклонил?
Примечание : я не ищу священную войну между монадами и другими формами вычислений. Давайте оставим тему только для выбора комитета относительно ввода / вывода.
functional-programming
history
haskell
chrisaycock
источник
источник
Ответы:
Согласно «Истории Хаскелла: быть ленивым с классом» (см. Раздел 7), изначально рассматривались три разные модели: потоки , продолжения и «прохождение мира» (я не знаю много о Чистоте, но, похоже, это Чистый путь ?).
Последний абзац раздела 7.2 указывает, что концепция типа уникальности не была разработана в это время:
Концепция монад, кажется, была введена (повторно использована из другой работы) в более поздних версиях Haskell, поскольку она привела к более чистому коду (по сравнению с продолжениями / потоками):
источник
Лучшее объяснение, которое я видел, - « Борьба с неуклюжим отрядом » Саймона Пейтона-Джонса .
Из того, что я помню из газеты, вопросы, связанные с ленью, сыграли большую роль в решении. (Я не уверен, что Clean по умолчанию ленив, как и Haskell.)
источник