Я пытаюсь научиться Haskell. Я начинаю понимать концепцию монады и начинаю использовать известные монад в моем коде, но у меня все еще возникают трудности с приближением монад с дизайнерской точки зрения. В OO существует несколько правил, таких как "идентифицировать существительные" для объектов, наблюдать за каким-то состоянием и интерфейсом... но я не могу найти эквивалентные ресурсы для монад.
Итак, как вы определяете проблему как монадическую по своей природе? Каковы хорошие шаблоны проектирования для монадического дизайна? Какой ваш подход, когда вы понимаете, что какой-то код будет лучше реорганизован в монаду?