Що таке клас класу Comonad у Haskell? Як і в Comonad від Control.Comonad у пакеті comonad (пояснення будь-яких інших пакетів, які надають клас класу Comonad, також вітаються). Я розпливчасто чув про Комонаду, але все, що я насправді знаю про це, є те, що це забезпечує extract :: w a -> a, якась паралель монаді 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)