tipos sintaxis opciones multiplicar hacer definir datos data contador como basica haskell typeclass comonad

sintaxis - or en haskell



¿Qué es la clase de tipo Comonad en Haskell? (2)

Esto no responde completamente mi pregunta, pero quería poner alguna información relevante en formato de respuesta:

"co" (sin apretar) significa "voltear las flechas". Aquí hay una visión aproximada de eso.

Considera las operaciones monádicas:

return :: a ~> m a flip (>>=) :: (a ~> m b) -> (m a ~> m b)

Invierta las flechas onduladas y obtendrá las operaciones comonádicas:

extract :: a <~ w a extend :: (a <~ w b) -> (w a <~ w b)

(Escrito con flechas normales)

extract :: w a -> a extend :: (w a -> b) -> w a -> w b

Observe cómo en este formato, return es una flecha que simplemente encaja en el argumento slot para flip (>>=) , y lo mismo es cierto para extract y extend . Las leyes de Monad / comonad dicen que cuando pones return o extract en esa ranura, el resultado es la flecha de identidad. Las leyes son las mismas, "solo con las flechas volteadas". Esa es una respuesta estupenda, pero espero que brinde alguna información.

¿Qué es la clase de tipo Comonad en Haskell? Al igual que en Comonad desde Control.Comonad en el paquete comonad (también son bienvenidas las explicaciones de cualquier otro paquete que proporcione una clase de tipo Comonad). He escuchado vagamente sobre Comonad, pero lo único que sé realmente es que proporciona extract :: wa -> a , extract :: wa -> a especie de paralelo al return :: a -> ma de Monad return :: a -> ma .

Puntos de bonificación por anotar los usos de la "vida real" de Comonad en código "real".