Что такое класс типов Comonad в Haskell? Как и в Comonad от Control.Comonad в пакете comonad (также приветствуются объяснения любых других пакетов, которые предоставляют класс типов Comonad). Я смутно слышал о Comonad, но все, что я действительно знаю о нем, - это то, что это обеспечивает extract :: w a -> a, своего рода параллель с Monad return :: a -> m a.
Бонусные баллы за «реальное» использование Comonad в «реальном» коде.
return :: a ~> m a, flip bind :: (a ~> m b) -> (m a ~> m b). Поменяйте волнистые стрелки , и вы получите comonadic операции: extract :: a <~ w a, extend :: (a <~ w b) -> (w a <~ w b)( extract :: w a -> a, extend :: (w a -> b) -> w a -> w b)