monad -> comonad