public static Iteratee <E, A> Flatten <E, A>(this Iteratee <E, Iteratee <E, A> > o) { return(o.SelectMany(z => z)); }
public static Iteratee <E, B> Select <E, A, B>(this Iteratee <E, A> k, Func <A, B> f) { return(k.SelectMany <E, A, B>(a => Iteratee <E, B> .Done(f(a), Input <E> .Empty()))); }
public static Iteratee <E, B> Apply <E, A, B>(this Iteratee <E, Func <A, B> > f, Iteratee <E, A> o) { return(f.SelectMany(g => o.Select(p => g(p)))); }
public static Iteratee <E, A> Flatten <E, A>(this Iteratee <E, Iteratee <E, A> > o) => o.SelectMany(z => z);