Ich bin neu in der funktionalen Programmierung. Während ich ein Tutorial über Monaden befolgte, konnte ich es als die Analogie des Decorator-Musters in OOP betrachten. Habe ich Recht, oder gibt es ein Entwurfsmuster, das den Monaden sehr ähnlich ist?
Monaden sind definitiv keine Dekorateure. Es gibt kein herkömmliches OOP-Muster, das eine direkte Analogie zu Monaden ist. Obwohl Sie Monaden in OOP einfach implementieren können, siehe z. B .:
Das beste Clojure-basierte Monaden-Tutorial, das ich kenne, ist diese Videoserie von Brian Marick:
Ich schlage vor, es durchzusehen - es ist eine ziemlich gute Einführung mit vielen Beispielen.
Sie können anfangen, über Monaden als über "überschreibbare Semikola" zu denken, wegen der bekannten Syntax-Zucker in Haskell
im Allgemeinen bedeutet das, dass Sie dieselbe Kontrollstruktur (Codeblock) haben können, die unterschiedliche Dinge macht, abhängig davon, welche Monade gerade verwendet wird
qick Beispiel in Haskell
%Vor%wird in GHCI ausgeführt, es wird
angezeigt %Vor%Wie Sie sehen können, erzeugt derselbe Codeblock unterschiedliche Ergebnisse - Liste in einem Fall und vielleicht in einem anderen Fall, in die entsprechende Datenstruktur eingepackt.