public static TMonad Run <T, TMonad> (IMonadExpressionBuilder builder, Func <IMonad <T> > body) where TMonad : IMonad <T> { var prevBuilder = CurrentBuilder; try { CurrentBuilder = builder; return((TMonad)body()); } finally { CurrentBuilder = prevBuilder; } }
public static TMonad CxRun <T, TMonad> (IMonadExpressionBuilder builder, Func <IMonad <T> > body) where TMonad : IMonad <T> { return(ComputationExpression.Run <T, TMonad> (builder, body)); }