internal static Comonad <Comonad <T> > δ(Comonad <T> monad) => monad.Extend(_ => _);
internal static T ε(Comonad <T> monad) { throw new PrototypeException(); }