public static Monad <TTarget> Apply <TSource, TTarget>(this Monad <TSource> monad, Func <TSource, TTarget> func) => func(monad.Value).CreateMonad();
public static Monad <T> Apply <T>(this Monad <T> monad, Action <T> action) { action(monad.Value); return(monad); }