Tenía algo de experiencia en Haskell y actualmente estoy aprendiendo sobre Scala. Me pregunto si hay algo equivalente a las Mónadas en Scala.Scala equivalente a las mónadas de Haskell
Respuesta
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))
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 –
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. –
@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! –
Creo que vale la pena señalar que de Scala "para la comprensión" es equivalente a Haskell de monádica "hacer"
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.
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.
- 1. Algunas preguntas sobre las mónadas en Haskell
- 2. Scala equivalente de do-notación de Haskell (una vez más)
- 3. Mezcla de mónadas en Haskell
- 4. evaluación de Haskell y perezosas Mónadas
- 5. Haskell equivalente a Boost.Fusion
- 6. equivalente de Scala Hoogle?
- 7. Scala equivalente a wsdl2java?
- 8. Haskell: ¿Sería útil la notación "do" para contextos distintos de las mónadas?
- 9. ¿Son las continuas mónadas?
- 10. Equivalente a Python urllib en Haskell
- 11. ¿Cuáles son todas las convenciones de nomenclatura de mónadas?
- 12. ¿Deseche su equivalente en Scala?
- 13. equivalente de tela en Haskell?
- 14. ¿Cuál es el estado actual de las mónadas restringidas?
- 15. ¿Hay un equivalente a SuppressWarnings en Scala?
- 16. Mónadas Haskell y un fallo que no requiere una cadena
- 17. Haskell Scala interoperabilidad
- 18. Mónadas como adjuntos
- 19. Scala equivalente a Python devolver varios artículos
- 20. ¿Qué son las mónadas estándar de Scala que no sean la opción?
- 21. Tiene Scala alguna equivalencia con Haskell indefinido?
- 22. ¿F # tiene un equivalente a la toma de Haskell?
- 23. Mónadas y actores
- 24. Uso de estrategias paralelas con mónadas
- 25. Scala ListBuffer (o equivalente) shuffle
- 26. Adición de enlace operador monádico de Haskell a Scala
- 27. Haskell - equivalente eficiente de for loop?
- 28. ¿Common Lisp equivalente a la función principal de Haskell? función
- 29. ¿El 'rendimiento' en Scala es equivalente a la función de mapa?
- 30. ¿declaración "con" equivalente para Scala?
¿Consideró http://stackoverflow.com/questions/1992532/monad-trait-in-scala? – VonC