public Cons(Func <TA, Effect <TX> > head, EffectFnSeq <TX, TB> tail) { Head = head; Tail = tail; }
internal override LeftEffectFnSeq <TA, TC> Go <TC>(EffectFnSeq <TB, TC> continuations) => Left.Go(new EffectFnSeq <TX, TC> .Node <TB>(Right, continuations));
public EffectFnSeq <TA, TC> AppendMany <TC>(EffectFnSeq <TB, TC> continuations) => new EffectFnSeq <TA, TC> .Node <TB>(this, continuations);
internal override LeftEffectFnSeq <TA, TC> Go <TC>(EffectFnSeq <TB, TC> continuations) => new LeftEffectFnSeq <TA, TC> .Cons <TB>(Single, continuations);
public Node(EffectFnSeq <TA, TX> left, EffectFnSeq <TX, TB> right) { Left = left; Right = right; }
internal abstract LeftEffectFnSeq <TA, TC> Go <TC>(EffectFnSeq <TB, TC> continuations);
internal override Effect <TResult> Bind2 <TResult>(EffectFnSeq <T, TResult> continuations) => new Effect <TResult> .Impure <TSideEffect, TSideEffectResult>(SideEffect, Continuations.AppendMany(continuations));
public Impure(TSideEffect sideEffect, EffectFnSeq <TSideEffectResult, T> continuations) { SideEffect = sideEffect; Continuations = continuations; }
internal override Effect <TResult> Bind2 <TResult>(EffectFnSeq <T, TResult> continuations) => continuations.Apply(Value);
internal abstract Effect <TResult> Bind2 <TResult>(EffectFnSeq <T, TResult> continuations);