Извините, я не знаю статей или книг, в которых подробно рассматриваются различные способы использования всех этих конструкций, но я могу дать вам несколько ссылок на отдельные ресурсы.
Довольно распространенный шаблон - создание преобразователей монад вместо простых монад (см. Также ссылку в следующем абзаце). По сути, это означает, что вы создаете что-то, что необходимо комбинировать с другими монадами, в результате чего получается более сложная монада, способная обрабатывать особенности обеих из них.
В Real World Haskell есть несколько глав о монадах. В главе 14. Монады авторы объясняют основы и некоторые общие способы использования (может быть, список, состояние). Глава 15. Программирование с помощью монад дает больше объяснений о том, как их эффективно использовать (она также охватывает монаду читателя). В следующей главе объясняется, как использовать Parsec , но может быть интереснее поискать статьи о том, как это работает на самом деле: это должен быть действительно хороший пример хорошо организованного использования монад для синтаксического анализа. Fianlly, Глава 18. Трансформаторы монадзнакомит с принципами работы монадных преобразователей и шаг за шагом показывает, как их построить. Также интересны соображения по поводу заключительных разделов главы.
Однажды я прочитал действительно интересный вопрос по SO о творческом использовании монад . Предложенные ссылки были отличным чтением по этой теме. В этом духе я попытался попросить то же самое о стрелах : ответов определенно меньше, чем о монадах, но тем не менее интересных.
Что касается шаблонов ООП, созданных группой из четырех человек, IBM предлагает хороший набор из трех статей по этой теме в их серии « Функциональное мышление» . Целевой функциональный язык - Scala. Далее они объясняют обычные шаблоны проектирования в ООП и показывают, как они отображаются в Scala.
- Функциональное мышление: функциональные шаблоны проектирования, часть 1 . Здесь они охватывают фабрики, методы шаблонов, стратегию, легковес. Суть в том, что с функциями как первоклассными значениями все становится намного проще.
- Функциональное мышление: функциональные шаблоны проектирования, часть 2 . Это про Java и Groovy . Он обращается к шаблону адаптера.
- Функциональное мышление: функциональные шаблоны проектирования, часть 3 . Здесь они говорят о шаблоне интерпретатора. Опять же, целевой язык отличный.
Самая релевантная статья по вашему вопросу - это, конечно, первая, но две другие, тем не менее, могут быть интересными связанными чтениями.