2010-09-22 11 views
6

Nach Sie, welche Sprache denken Sie, würde das Beste sein Monaden für die Implementierung (Python/Ruby-/ Lisp) ?, auch einige Einsatzmöglichkeiten von Monaden kann mir jemand sagen (bitte Beispiele geben), wie Ausnahmen?Einige Sprachen und verwendet für Monaden

Vielen Dank im Voraus

+0

änderte ich den Titel, weil die vorherige beiläufig Passanten irreführend wurde durch diese Frage argumentative war zu denken. Um die Frage nicht zu schließen, habe ich den Titel bearbeitet. –

+0

Ok danke ...... – Ishihara

Antwort

19

All About Monads - legendäre Tutorial, das alle Standard-Monaden Listen und gibt eine Menge von realen Beispielen.

Beliebte Monaden, die Sie auch in den Mainstream-Sprachen treffen können, sind Maybe, List und Continuation. Einige Leute denken auch, dass jQuery selbst eine Monade ist (wie folgt die monadic axioms).

Was die Sprachenwahl, Haskell und seine Derivate werden mit Monaden als grundlegendes Konzept jedoch als Option, Monaden sind möglich, in vielen modernen Sprachen zu konstruieren. Um mich mit dem Monad-Konzept vertraut zu machen, sollte ich besser die Sprache wählen, mit der ich mich am wohlsten fühle.

+0

Super Tutorial! – Ishihara

+0

"Alles über Monaden" scheint verschwunden zu sein :(.. die nächste, die ich finden kann, ist hier: http://en.wikibooks.org/wiki/Haskell/Understanding_monads (Dies ist die erste von 6 Seiten). Wenn Sie die sehen Originalartikel wieder, bitte lassen Sie mich wissen. – laher

+0

@ amir75, thx für Hinweise. Ich habe den Link aktualisiert. –

1

Beispiele finden Philip Wadler „Monaden für funktionale Programmierung“.

7

In der Reihenfolge der Präferenz:

  1. Haskell
  2. F #
  3. Scala
  4. C#

Monads nach abnehmender Einfachheit:

  1. Vielleicht (Ausnahme)
  2. Reader
  3. Writer
  4. Staat
  5. Parser
  6. Async
+0

Nein OCaml oder ist das mit F # gelistet? – wheaties

+1

Ocaml haben keinen eingebauten syntaktischen Zucker für Monade leider – gandjustas

+7

Scala> F #. Warum? Einfach. In Scala können Sie Funktionen schreiben, die auf einer beliebigen Monade funktionieren, was in F # nicht möglich ist, da dies höherwertige Typen erfordert. –

3
+2

obwohl Monaden sind nicht idiomatisch in clojure (in den meisten Fällen gibt es einen alternativen Weg, um das gleiche Ziel mit anderen langs Funktionen zu erreichen), und seine offizielle Implementation hat eine Menge Makro-Hacker, es ist möglich, sie zu verwenden. //intensivesystems.net/tutorials/monads_101.html, http://erl.nfshost.com/2010/09/05/bind-unit-and-all-that-2 und http://onclojure.com/2009/06/24/protecting-mutable-state-in- die Staatsmonade / – jneira

Verwandte Themen