Ejemplos de una mónada cuya parte de aplicación puede optimizarse mejor que la parte de mónada
En una discusión escuché queApplicative
La interfaz de algunos analizadores se implementa de manera diferente, más eficiente que suMonad
interfaz. La razón es que conApplicative
conocemos todos los "efectos" de antemano, antes de que se ejecute todo el cálculo efectivo. Con las mónadas, los efectos pueden depender de los valores durante el cálculo, por lo que esta optimización no es posible.
Me gustaría ver algunos buenos ejemplos de esto. Puede ser un parser muy simple o una mónada diferente, eso no es importante. Lo importante es que elApplicative
interfaz de tal mónada cumple con sureturn
yap
, pero usando elApplicative
Produce un código más eficiente.
Actualizar: Solo para aclarar, aquí no me interesan los aplicativos que no pueden ser mónadas. La pregunta es sobre cosas que son ambas cosas.