Comonads, dual of Monads
