2010-09-22 5 views
6

Secondo te, quale lingua pensi sia la migliore per implementare le monade (Python/Ruby/LISP) ?, anche qualcuno può dirmi alcuni possibili usi delle monadi (per favore fornisci esempi), come eccezioni?Alcune lingue e usi per le monadi

Grazie in anticipo

+0

ho cambiato il titolo, perché quello precedente era fuorviante passanti casuali da pensare a questa domanda era polemico. Per mantenere la domanda da chiusa ho modificato il titolo. –

+0

Ok grazie ...... – Ishihara

risposta

19

All About Monads - leggendario tutorial che elenca tutte le monadi standard e dà un sacco di esempi reali.

Le monadi popolari che è possibile incontrare anche nelle lingue tradizionali sono Maybe, List e Continuation. Alcune persone pensano anche che jQuery stesso sia una monade (poiché segue lo monadic axioms).

Per quanto riguarda la scelta della lingua, Haskell e i suoi derivati ​​utilizzano le monadi come un concetto fondamentale, tuttavia, come opzione, la costruzione di monadi è possibile in molte lingue moderne. Per familiarizzare con il concetto di monade, farò meglio a scegliere la lingua con cui mi sento più a mio agio.

+0

Tutorial impressionante! – Ishihara

+0

"Tutto sulle monadi" sembra essere scomparso :(.. il più vicino che riesco a trovare è qui: http://en.wikibooks.org/wiki/Haskell/Understanding_monads (questo è il primo di 6 pagine). nuovo articolo originale, per favore fatemelo sapere – laher

+0

@ amir75, thx per indicare. Ho aggiornato il collegamento –

1

Per esempi, vedere Philip Wadler, "Monadi per la programmazione funzionale".

7

In ordine di preferenza:

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

Monadi in ordine di semplicità decrescente:

  1. Forse (Exception)
  2. Reader
  3. Writer
  4. Stato
  5. Parser
  6. Async
+0

Nessun OCaml o è elencato con F #? – wheaties

+1

Ocaml non ha zucchero sintattico incorporato per monad sfortunatamente – gandjustas

+7

Scala> F #. Perché? Semplice. In Scala puoi scrivere funzioni che operano su qualsiasi monade, che non puoi usare in F #, perché richiede tipi di tipo superiore. –

3
+2

sebbene monade non sono idiomatico in clojure (nella maggior parte dei casi c'è un modo alternativo per ottenere lo stesso obiettivo con le altre caratteristiche di lang), e la sua implzione ufficiale ha un sacco di macerie, è possibile usarle.Vorrei aggiungere un altro tutorial: http: //intensivesystems.net/tutorials/monads_101.html, http://erl.nfshost.com/2010/09/05/bind-unit-and-all-that-2 e http://onclojure.com/2009/06/24/protecting-mutable-state-in- lo stato-monade / – jneira