haskell Comonad transformers