Пример #1
0
 public Iteratee <D, A> ContraSelect <D>(Func <D, E> f)
 {
     return(Fold(
                (a, i) => Iteratee <D, A> .Done(a, i.IsEof ? Input <D> .Eof() : Input <D> .Empty())
                , r => Iteratee <D, A> .Cont(i => r(i.Select(f)).ContraSelect(f))
                ));
 }
Пример #2
0
 public static Iteratee <E, B> SelectMany <E, A, B>(this Iteratee <E, A> k, Func <A, Iteratee <E, B> > f) =>
 k.Fold(
     (a, i) => i.IsEmpty ?
     f(a) :
     f(a).Fold(
         (b, _) => Iteratee <E, B> .Done(b, i)
         , s => s(i)
         )
     , r => Iteratee <E, B> .Cont(u => r(u).SelectMany(f))
     );
Пример #3
0
 public Iteratee <E, A> Done <A>(A a)
 {
     return(Iteratee <E, A> .Done(a, this));
 }
Пример #4
0
 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())));
 }
Пример #5
0
 public Iteratee <E, A> Done <A>(A a) => Iteratee <E, A> .Done(a, this);