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