Desculpe, não sei de artigos ou livros que cobrem em detalhes os diferentes usos para todas essas construções, mas posso fornecer alguns links para recursos individuais.
Um padrão bastante comum é construir transformadores de mônadas em vez de mônadas simples (veja também o link no próximo parágrafo). Basicamente, significa que você constrói algo que deve ser combinado com outras mônadas, resultando em uma mais complexa, capaz de lidar com as características de ambas.
No Real World Haskell, existem alguns capítulos sobre mônadas. No Capítulo 14. Mônadas, os autores explicam os fundamentos e alguns usos comuns (talvez, lista, estado). O Capítulo 15. Programando com mônadas fornece mais explicações sobre como usá-las efetivamente (também cobre a mônada do leitor). O capítulo seguinte explica como usar o Parsec , mas pode ser mais interessante pesquisar artigos sobre como ele realmente funciona: deve ser um bom exemplo de um uso bem organizado de mônadas para análise. Fianlly, Capítulo 18. Transformadores de mônadaapresenta como funcionam os transformadores de mônada e, em seguida, mostra como construir um, passo a passo. As considerações para as seções finais do capítulo também são interessantes.
Eu li uma vez uma pergunta realmente interessante no SO sobre o uso criativo das mônadas . Os links propostos foram ótimas leituras sobre o assunto. Com esse espírito, tentei perguntar o mesmo para as flechas : definitivamente obtive menos respostas do que as das mônadas, mas mesmo assim interessantes.
Com relação aos padrões OOP pelo grupo de quatro, há um bom conjunto de 3 artigos da IBM sobre o tópico em sua série Pensamento funcional . A linguagem funcional de destino é Scala. Eles continuam explicando os padrões de design usuais em OOP e mostrando como eles são mapeados no Scala.
- Pensamento funcional: padrões de design funcional, parte 1 . Aqui, eles cobrem fábricas, métodos de modelo, estratégia, peso mosca. O ponto principal é que, tendo funções como valores de primeira classe, tudo é muito mais simples.
- Pensamento funcional: padrões de design funcional, parte 2 . Trata-se de java e groovy . Ele aborda o padrão do adaptador.
- Pensamento funcional: padrões de design funcional, parte 3 . Aqui, eles falam sobre o padrão do intérprete. Mais uma vez, o idioma de destino é descolado.
O artigo mais relevante para a sua pergunta é com certeza o primeiro, mas os outros dois podem ser leituras interessantes relacionadas.