О, спасибо. Если я правильно понял, можно предложить более простую иллюстрацию:
Пример на Java
class NumberAdder {
private final int a;
private final int b;
public NumberAdder(int a, int b) {
this.a = a;
this.b = b;
}
public int addNumbers() {
return a + b;
}
}
// в вызывающем коде:
...
NumberAdder numberAdder = new NumberAdder(2, 3);
int result = numberAdder.addNumbers();
// или даже:
...
int result = new NumberAdder(2, 3).addNumbers();
Несколько раз встречал такой подход в коде коллег. На вопрос «зачем?» внятного ответа ни разу не получил, предпочитали молча переделать.
Прочитал перевод, прочитал в оригинале, прочитал википедию, нашёл вялый вопрос на SO, всё равно не понял. Не возьмётся ли кто-то предложить короткий пример?
Значит цель достигнута. Дело в том, что абстрактный программист с ООП бэкграундом не может с первого раза понять что такое монады и зачем они нужны. Ему придётся прочитать википедию, десятки введений, и, скорее всего, поломать глаза о примеры кода на Haskell. Эта статья претендует на место одного из десятка введений, которые программист в любом случае будет читать.
А вы не путаете мунады с монадами случайно? Теория котегорий появилась около двух часов назад. Аппарат ещё не разработан, школа отсутствует. Даже статьи на википедии ещё нет.
Несколько раз встречал такой подход в коде коллег. На вопрос «зачем?» внятного ответа ни разу не получил, предпочитали молча переделать.