Articles of mónadas

¿Qué ventaja nos da Monad sobre un Aplicativo?

He leído este artículo , pero no entendí la última sección. El autor dice que Monad nos da sensibilidad al contexto, pero es posible lograr el mismo resultado utilizando solo una instancia Aplicable: let maybeAge = (\futureYear birthYear -> if futureYear < birthYear then yearDiff birthYear futureYear else yearDiff futureYear birthYear) (readMay futureYearString) (readMay birthYearString) […]

¿Por qué se modelan los efectos secundarios como mónadas en Haskell?

¿Podría alguien dar algunos consejos sobre por qué los cálculos impuros en Haskell se modelan como mónadas? Me refiero a que la mónada es solo una interfaz con 4 operaciones, así que ¿cuál fue el razonamiento para modelar los efectos secundarios en ella?

¿El operador de mónada se acerca (>> =) más cerca de la composición de la función (encadenamiento) o la aplicación de la función?

En muchos artículos he leído que el operador mónada >>= es una forma de representar la composición de la función. Pero para mí está más cerca de algún tipo de aplicación de función avanzada ($) :: (a -> b) -> a -> b (>>=) :: Monad m => ma -> (a -> mb) -> mb […]

¿Haskell es verdaderamente puro (es cualquier lenguaje que se ocupa de la entrada y la salida fuera del sistema)?

Después de tocar las Mónadas con respecto a la progtwigción funcional, ¿la característica realmente hace que un lenguaje sea puro, o es simplemente otra “tarjeta gratuita para salir de la cárcel” para razonar los sistemas informáticos en el mundo real, fuera de las matemáticas de pizarra? EDITAR: Esto no es cebo de fuego como alguien […]

Diferencia entre Mónada y Aplicativo en Haskell

Acabo de leer lo siguiente de typeclassopedia sobre la diferencia entre Monad y Applicative . Puedo entender que no hay join en Applicative . Pero la siguiente descripción me parece vaga y no pude entender qué significa exactamente “el resultado” de una computación / acción monádica. Entonces, si pongo un valor en Maybe , que […]

Mónadas con Join () en lugar de Bind ()

Las mónadas generalmente se explican en turnos de return y bind . Sin embargo, supongo que también puedes implementar bind en términos de join (y fmap ?) En los lenguajes de progtwigción que carecen de funciones de primera clase, el bind es insoportablemente incómodo de usar. join , por otro lado, parece bastante fácil. Sin […]

Cómo obtener el valor normal de la acción IO en Haskell

Tengo la siguiente función: get :: Chars -> IO Chars get cs = do char <- getChar let (dats, idx) = (curData cs, curIndex cs) let (x,y:xs) = splitAt idx dats let replacement = x ++ (ord char) : xs return $ Chars replacement idx y quiero obtener un Chars de él, no una acción […]

¿Qué es la mónada indexada?

¿Qué es la mónada indexada y la motivación para esta mónada? He leído que ayuda a realizar un seguimiento de los efectos secundarios. Pero el tipo de firma y documentación no me lleva a ninguna parte. ¿Cuál sería un ejemplo de cómo puede ayudar a realizar un seguimiento de los efectos secundarios (o cualquier otro […]

¿Cómo convertir A ] a B ] si A y B son mónadas?

Estoy buscando una solución más general que explote las mónadas (y monoides posiblemente) para lograr lo mismo que if( xs.contains(None) ) None else Some(xs.flatten) hace para xs de tipo Seq[Option[A]] ¿Cómo puedo hacer eso con Scalaz? Siento que me falta algo evidente.

Cómo extraer valor de la acción monádica

¿Hay una función incorporada con la firma :: (Monad m) => ma -> a ? Hoogle dice que no hay tal función. ¿Puedes explicar porque?