Haskell Language Common functors as the base of cofree comonads Cofree (Const c) ~~ Writer c


Example

Given

data Const c a = Const c

we have

data Cofree (Const c) a
     = a :< Const c

which is isomorphic to

data Writer c a = Writer c a