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 Iteratee <E, C> ZipWith <B, C>(Iteratee <E, B> o, Func <A, Func <B, C> > f) { return(this.SelectMany(a => o.Select(b => f(a)(b)))); }