public static MType <T> Join(MType <MType <T> > type) { return(type.Bind <T>(Cat.Id)); }
public MType <U> Ap <U>(MType <Func <T, U> > appl) { return(ApS(appl)(this)); }
public MType <U> Then <U>(MType <U> m) { return(m); }
public Func <MType <T>, MType <U> > ApS <U>(MType <Func <T, U> > f) { return(t => new MType <U>(f.Value(t.Value))); }