public static T TakeFirst <T>(this NonEmptyList <T> self) { var enumerator = self.GetEnumerator(); enumerator.MoveNext(); return(enumerator.Current); }
private static NonEmptyList <T> ConstructRecursively(IEnumerator <T> enumerator) { var current = enumerator.Current; if (enumerator.MoveNext()) { return(NonEmptyList <T> .ConsNEL(current, ConstructRecursively(enumerator))); } else { return(NonEmptyList <T> .Singleton(current)); } }
public static FuncyList <T> Take <T>(this NonEmptyList <T> self, int length) { return(NonEmptyListTCNT.ToFuncyList(self).Take(length)); }
public static FuncyList <T> ToFuncyList <T>(this NonEmptyList <T> self) { return(FuncyList <T> .Construct(self.ToArray())); }
public override NonEmptyList <TReturn> FMap <TReturn>(Func <T, TReturn> f) { return(NonEmptyList <TReturn> .Singleton(f(this.value))); }
public override NonEmptyList <TReturn> FMap <TReturn>(Func <T, TReturn> f) { return(NonEmptyList <TReturn> .ConsNEL(f(this.head), this.tail.FMap(f))); }
public NonEmptyList <TReturn> ComputeWith <TReturn>(Func <T, NonEmptyList <TReturn> > f) { return(NonEmptyList <TReturn> .Construct(this.SelectMany(v => f(v)))); }
public ConsNEL(T head, NonEmptyList <T> tail) { this.head = head; this.tail = tail; }
public NonEmptyList <T> Point(T value) { return(NonEmptyList <T> .Singleton(value)); }
public NonEmptyList <TReturn> ApplyRight <TReturn>(NonEmptyList <TReturn> other) { return(other); }
public NonEmptyList <T> ApplyLeft <TReturn>(NonEmptyList <TReturn> other) { return(this); }
public NonEmptyList <TReturn> Apply <TReturn>(NonEmptyList <Func <T, TReturn> > f) { return(NonEmptyList <TReturn> .Construct(f.SelectMany(fElem => this.FMap(fElem)))); }
public static NonEmptyList <T> ConsNEL(T head, NonEmptyList <T> tail) { return(new ConsNEL <T>(head, tail)); }