public static ConsumerLift <RT, IN, B> SelectMany <RT, IN, A, B>(this ConsumerLift <RT, IN, A> ma, Func <A, Eff <RT, B> > f) where RT : struct, HasCancel <RT> => ma.Bind(a => new ConsumerLift <RT, IN, B> .Lift <B>(f(a), ConsumerLiftPure <RT, IN, B>));
public static ConsumerLift <RT, IN, C> SelectMany <RT, IN, A, B, C>(this ConsumerLift <RT, IN, A> ma, Func <A, Eff <B> > f, Func <A, B, C> project) where RT : struct, HasCancel <RT> => ma.Bind(a => new ConsumerLift <RT, IN, C> .Lift <B>(f(a), b => ConsumerLiftPure <RT, IN, C>(project(a, b))));