public override Producer <RT, OUT, A> InterpretProducer <RT, OUT>() => Producer.release <RT, OUT, X>(Value).Bind(x => Next(x).InterpretProducer <RT, OUT>()).ToProducer();
public override Producer <RT, OUT, A> InterpretProducer <RT, OUT>() => Producer.Pure <RT, OUT, A>(Value);
public override Producer <RT, OUT, B> SelectMany <RT, OUT, B>(Func <A, Producer <RT, OUT, B> > f) => Producer.release <RT, OUT, X>(Value).Bind(x => Next(x).Bind(f)).ToProducer();
public override Producer <RT, OUT, A> ToProducer <OUT>() => Producer.Pure <RT, OUT, A>(Value);
public static Producer <RT, OUT, B> SelectMany <RT, OUT, A, B>(this Producer <RT, OUT, A> ma, Func <A, Aff <RT, B> > f) where RT : struct, HasCancel <RT> => from a in ma from b in Producer.lift <RT, OUT, B>(f(a)) select b;
public static Producer <RT, OUT, C> SelectMany <RT, OUT, A, B, C>(this Eff <A> ma, Func <A, Producer <RT, OUT, B> > f, Func <A, B, C> project) where RT : struct, HasCancel <RT> => from a in Producer.lift <RT, OUT, A>(ma) from b in f(a) select project(a, b);
public static Producer <RT, OUT, C> SelectMany <RT, OUT, A, B, C>(this Producer <OUT, A> ma, Func <A, Eff <RT, B> > f, Func <A, B, C> project) where RT : struct, HasCancel <RT> => from a in ma.Interpret <RT>() from b in Producer.lift <RT, OUT, B>(f(a)) select project(a, b);
public static Producer <RT, OUT, B> SelectMany <RT, OUT, A, B>(this Eff <RT, A> ma, Func <A, Producer <OUT, B> > f) where RT : struct, HasCancel <RT> => from a in Producer.lift <RT, OUT, A>(ma) from b in f(a).Interpret <RT>() select b;