Comonad (a hopefully correct one).