Es tut mir leid, dass ich keine Artikel oder Bücher kenne, die die verschiedenen Verwendungen für all diese Konstrukte detailliert behandeln, aber ich kann Ihnen einige Links zu einzelnen Ressourcen geben.
Ein weit verbreitetes Muster besteht darin, Monadentransformatoren anstelle einfacher Monaden zu bauen (siehe auch den Link im nächsten Absatz). Es bedeutet im Grunde, dass Sie etwas bauen, das mit anderen Monaden kombiniert werden muss, was zu einer komplexeren Monade führt, die die Funktionen beider Monaden verarbeiten kann.
In Real World Haskell gibt es einige Kapitel über Monaden. In Kapitel 14. Monaden erklären die Autoren die Grundlagen und einige gebräuchliche Verwendungen (möglicherweise Liste, Zustand). Kapitel 15. Das Programmieren mit Monaden enthält weitere Erklärungen zu deren effektiver Verwendung (es behandelt auch die Lesermonade). Im folgenden Kapitel wird die Verwendung von Parsec erläutert. Es kann jedoch interessanter sein, nach Artikeln zu suchen, die die tatsächliche Funktionsweise von Paraden beschreiben: Es sollte ein wirklich gutes Beispiel für eine gut organisierte Verwendung von Monaden zum Parsen sein. Fianlly, Kapitel 18. Monadentransformatorenstellt vor, wie Monadentransformatoren funktionieren, und zeigt dann Schritt für Schritt, wie man einen erstellt. Interessant sind auch die Überlegungen zu den letzten Abschnitten des Kapitels.
Ich habe einmal eine wirklich interessante Frage zu SO über den kreativen Einsatz von Monaden gelesen . Die vorgeschlagenen Links waren großartige Lektüren zum Thema. Mit diesem Geist habe ich versucht, dasselbe nach Pfeilen zu fragen : Ich habe definitiv weniger Antworten als die auf Monaden bekommen, aber trotzdem interessante.
In Bezug auf OOP-Muster der vierköpfigen Gruppe gibt es in ihrer Reihe Functional Thinking eine Reihe von drei Artikeln von IBM zu diesem Thema . Die Zielfunktionssprache ist Scala. Anschließend erklären sie die üblichen Entwurfsmuster in OOP und zeigen, wie sie in Scala abgebildet werden.
- Funktionales Denken: Funktionale Entwurfsmuster, Teil 1 . Hier decken sie Fabriken, Vorlagenmethoden, Strategie, Fliegengewicht ab. Das Fazit ist, dass durch Funktionen als erstklassige Werte alles viel einfacher ist.
- Funktionales Denken: Funktionale Entwurfsmuster, Teil 2 . Hier geht es um Java und Groovy . Es adressiert das Adaptermuster.
- Funktionales Denken: Funktionale Entwurfsmuster, Teil 3 . Hier sprechen sie über das Interpretermuster. Auch hier ist die Zielsprache groovig.
Der relevanteste Artikel für Ihre Frage ist sicherlich der erste, aber die beiden anderen können dennoch interessante verwandte Lesarten sein.