Що таке клас класу 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
)