public static Middleware <R> SelectMany <T, R> (this Middleware <T> mw, Func <T, Middleware <R> > f) => cont => mw(t => f(t)(cont));
public static Middleware <RR> SelectMany <T, R, RR> (this Middleware <T> @this, Func <T, Middleware <R> > f, Func <T, R, RR> project) => cont => @this(t => f(t)(r => cont(project(t, r))));
public static Middleware <R> Select <T, R> (this Middleware <T> mw, Func <T, R> f) => cont => mw(t => cont(f(t)));
public static Middleware <R> Bind <T, R> (this Middleware <T> mw, Func <T, Middleware <R> > f) => SelectMany(mw, f);
public static Middleware <R> Map <T, R> (this Middleware <T> mw, Func <T, R> f) => Select(mw, f);
public static T Run <T>(this Middleware <T> mw) => mw(t => t);
public DbLogger(ConnectionString connString, ILogger log) { Connect = f => ConnectionHelper.Connect(connString, f); Time = op => f => Instrumentation.Time(log, op, f.ToNullary()); Trace = op => f => Instrumentation.Trace(log, op, f.ToNullary()); }