What is the Comonad typeclass in Haskell?

Dan Burton picture Dan Burton · Dec 8, 2011 · Viewed 17.1k times · Source

What is the Comonad typeclass in Haskell? As in Comonad from Control.Comonad in the comonad package (explanations of any other packages that provide a Comonad typeclass are also welcome). I've vaguely heard about Comonad, but all I really know about it is that is provides extract :: w a -> a, sort of a parallel to Monad's return :: a -> m a.

Bonus points for noting "real life" uses of Comonad in "real" code.

Answer

Alexey Romanov picture Alexey Romanov · Dec 8, 2011

These links may be helpful:

  1. Evaluating cellular automata is comonadic. In particular, "whenever you see large datastructures pieced together from lots of small but similar computations there's a good chance that we're dealing with a comonad".
  2. Sequences, streams, and segments
  3. Comonads in everyday life