2010-02-10 13 views

Respuesta

12

Es probable que desee comprobar scalaz; ha sido fuertemente influenciado por Haskell. De hecho, a menudo se le ha preguntado a uno de los principales colaboradores por qué no están simplemente usando Haskell, ¡ya que parece que les gusta tanto!

Scalaz hace un uso intensivo de implícitos para decorar estructuras con sus mónadas. Por ejemplo:

val fibs = (0, 1).iterate[Stream](i => i._2 -> (i._2 + i._1)).map(_._1) 
println(fibs.take(10)) 
+0

En realidad, el comentario @VonC en mi pregunta me dio más detalles. Pero no puedo aceptar esa respuesta, también @oxbow_lakes me mostró algo nuevo. Gracias chicos por la ayuda –

+0

BTW: los autores de Scalaz * do * usan Haskell. Si miras el código fuente de Scalaz, verás que usan Haskell para el sistema de compilación en lugar de Ant, por ejemplo. Además, Tony Morris (el autor principal) * es * un programador de Hakell bastante conocido. También es el autor de FunctionalJava, que es una biblioteca que implementa Functors, Aplicative Functors, Bifunctors, Monads, Comonads y Arrows for Java (al igual que Scalaz para Scala). Y en cuanto a por qué usar Scala: el sistema de tipos y el lenguaje de Scala se encuentran en realidad en varias áreas más poderosas y expresivas que las de Haskell. –

+0

@Jorg - el énfasis cambió - Sé que Tony usa Haskell, estaba dando a entender que se le había preguntado exactamente * por qué * él alguna vez usó scala! –

9

Creo que vale la pena señalar que de Scala "para la comprensión" es equivalente a Haskell de monádica "hacer"

0

Tanto Opción y la lista son mónadas. También creo que las proyecciones izquierda y derecha de Either también son mónadas.

0

No hay un concepto explícito de mónada en la biblioteca estándar de Scala (no hay rasgo/clase o tipo de clase apropiados).

Scala trata esto de una manera ad-hoc, vea Scala by example en la sección para las comprensiones para más detalles.

Cuestiones relacionadas