История изменений
Исправление a--, (текущая версия) :
Потому, что математики определили монаду именно так. А если у тебя какая-то хрень типизирована как монада, но не ассоциативна (где надо) — то это не монада, хотя и может быть воткнута в хаскельный do syntax.
Кстати:
1. Вот https://wiki.haskell.org/Monad_laws
2. В случае с монадой, предложенной Laz можно *определить* bind(f) исходя из ассоциативности. И это вроде прокатит.
Исходная версия a--, :
Потому, что математики определили монаду именно так. А если у тебя какая-то хрень типизирована как монада, но не ассоциативна (где надо) — то это не монада, хотя и может быть воткнута в хасельный do-syntax.
Кстати:
1. Вот https://wiki.haskell.org/Monad_laws
2. В случае с монадой, предложенной Laz можно *определить* bind(f) исходя из ассоциативности. И это вроде прокатит.