public FuncyListTC <TReturn> Apply <TReturn>(FuncyListTC <Func <T, TReturn> > f) { if (f.IsCons) { return(FuncyListTC.Construct(f.SelectMany(fCons => this.FMap(fCons)).ToArray())); } else { return(FuncyListTC.Nil <TReturn>()); } }
public FuncyListTC <TReturn> ApplyRight <TReturn>(FuncyListTC <TReturn> other) { return(other); }
public FuncyListTC <T> ApplyLeft <TReturn>(FuncyListTC <TReturn> other) { return(this); }
public override FuncyListTC <TReturn> ComputeWith <TReturn>(Func <T, FuncyListTC <TReturn> > f) { return(FuncyListTC.Nil <TReturn>()); }
public override FuncyListTC <TReturn> FMap <TReturn>(Func <T, TReturn> f) { return(FuncyListTC.Nil <TReturn>()); }
public override FuncyListTC <TReturn> ComputeWith <TReturn>(Func <T, FuncyListTC <TReturn> > f) { return(FuncyListTC.Construct(this.SelectMany(h => f(h)).ToArray())); }
public override FuncyListTC <TReturn> FMap <TReturn>(Func <T, TReturn> f) { return(FuncyListTC.Cons(f(this.Head), this.Tail.FMap(f))); }
public ConsTC(T head, FuncyListTC <T> tail) { this.Head = head; this.Tail = tail; }