Делают ли монады что-нибудь кроме повышения читабельности и производительности? - PullRequest
1 голос
/ 27 декабря 2011

За последние несколько месяцев я много смотрел на монады (функторы и аппликативные функторы).Я пытался выяснить, когда монады полезны в общем смысле.Если я смотрю на фрагмент кода, который я спрашиваю, должен ли я использовать определенную монаду или стек через трансформаторы?В моих усилиях я думаю, что нашел ответ, но я хочу, чтобы другие внесли свой вклад, если я что-то упустил.Мне кажется, что монады полезны для абстрагирования от конкретной сантехники для увеличения читабельности / склонности к куску кода, что может иметь побочный эффект увеличения производительности, требуя меньше кода для записи.Единственное исключение, которое я могу найти, - это монада IO, которая пытается сохранить чистую функцию чистой перед лицом IO.Не похоже, что данная монада дает решение проблемы, которая не может быть достигнута другими способами.Я что-то упустил?

1 Ответ

3 голосов
/ 27 декабря 2011

Предоставляет ли какая-либо функция, помимо простой полноты по Тьюрингу, решение проблемы, которую невозможно достичь другими способами? Нету. Все тьюрин-эквивалентные языки - это разные способы выражения одних и тех же базовых вещей. Поскольку монады построены из более фундаментальных строительных блоков, очевидно, что этот набор строительных блоков способен делать все, что может монада. Когда мы говорим о языке или функции, «позволяющей» нам что-то делать, мы подразумеваем, что она позволяет нам выразить эту вещь естественно таким образом, который легко понять.

...