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