2010-09-22 18 views
6

Según usted, ¿qué idioma cree que sería el mejor para implementar mónadas (Python/Ruby/LISP) ?, también puede alguien decirme algunos usos posibles de las mónadas (por favor, dé ejemplos), como excepciones?Algunos lenguajes y usos para mónadas

Gracias de antemano

+0

he cambiado el título porque el anterior era engañoso transeúntes ocasionales por pensar esta pregunta era argumentativo. Para evitar que la pregunta se cerrara, edité el título. –

+0

Ok gracias ...... – Ishihara

Respuesta

19

All About Monads - tutorial legendaria que enumera todas las mónadas estándar y da un montón de ejemplos del mundo real.

Las mónadas populares que puede encontrar incluso en los idiomas principales son Maybe, List y Continuation. Algunas personas también piensan que jQuery en sí mismo es una mónada (como sigue al monadic axioms).

En cuanto a la elección de idioma, Haskell y sus derivados utilizan mónadas como concepto fundamental, sin embargo, como opción, la construcción de mónadas es posible en muchos idiomas modernos. Para familiarizarme con el concepto de mónada, será mejor que elija el idioma con el que me siento más cómodo.

+0

¡Increíble tutorial! – Ishihara

+0

"Todo sobre las mónadas" parece haber desaparecido :(... lo más cercano que puedo encontrar está aquí: http://en.wikibooks.org/wiki/Haskell/Understanding_monads (esta es la primera de 6 páginas). Si ve el Artículo original de nuevo, por favor, avíseme. – laher

+0

@ amir75, thx para señalar. He actualizado el enlace. –

1

Para ejemplos, véase Philip Wadler, "mónadas para la programación funcional".

7

En orden de preferencia:

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

Mónadas en orden decreciente de simplicidad:

  1. Tal vez (Excepción)
  2. lector
  3. escritor
  4. Estado
  5. Analizador
  6. asíncrono
+0

No OCaml o está listado con F #? – wheaties

+1

Ocaml no tiene azúcar sintáctico incorporado para la mónada desafortunadamente – gandjustas

+7

Scala> F #. ¿Por qué? Sencillo. En Scala puedes escribir funciones que funcionan en cualquier mónada, que no puedes usar en F #, porque eso requiere tipos de mayor nivel. –

3
+2

aunque las mónadas no son idiomáticas en clojure (en la mayoría de los casos hay una forma alternativa de obtener el mismo objetivo con otras características de langs), y su implementación oficial tiene una gran cantidad de hackers macro, es posible usarlos. Añadiría otros tutoriales: http: //intensivesystems.net/tutorials/monads_101.html, http://erl.nfshost.com/2010/09/05/bind-unit-and-all-that-2 y http://onclojure.com/2009/06/24/protecting-mutable-state-in- el-estado-mónada / – jneira

Cuestiones relacionadas