Jaka jest typeklasa Comonad w Haskell? Tak jak w Comonad z Control.Comonad w pakiecie comonad (mile widziane są również wyjaśnienia wszystkich innych pakietów, które zapewniają typeklasę Comonad). Niewyraźnie słyszałem o Comonad, ale tak naprawdę wiem tylko o tym, że jest to extract :: w a -> a
coś w rodzaju paraleli do Monady return :: a -> m a
.
Dodatkowe punkty za odnotowanie użycia Comonad w „prawdziwym” kodzie.
return :: a ~> m a
, flip bind :: (a ~> m b) -> (m a ~> m b)
. Odwrócić falowane strzały i dostajesz comonadic operacje: extract :: a <~ w a
, extend :: (a <~ w b) -> (w a <~ w b)
( extract :: w a -> a
, extend :: (w a -> b) -> w a -> w b
)