public static <T> NonEmptyList<T> of(T head, ImmutableList<T> list){ return cons(head,list); }
public static <T> NonEmptyList<T> of(T head, T... value){ LazySeq<T> list = LazySeq.of(value); return cons(head,list); } public static <T> NonEmptyList<T> of(T head){
public static <T> NonEmptyList<T> eager(T head){ Seq<T> list = Seq.empty(); return cons(head,list); } public static <T> NonEmptyList<T> of(T head, ImmutableList<T> list){
public static <T> NonEmptyList<T> eager(T head, T... value){ Seq<T> list = Seq.of(value); return cons(head,list); } public static <T> NonEmptyList<T> eager(T head){
public static <T> NonEmptyList<T> of(T head){ LazySeq<T> list = LazySeq.empty(); return cons(head,list); }
public NonEmptyList<T> prepend(T value){ return cons(value, lazySeq()); }
default NonEmptyList<T> nonEmptyList(Supplier<T> s){ Iterator<T> it = iterator(); return NonEmptyList.cons(it.hasNext() ? it.next() : s.get(), LazySeq.fromIterator(it)); }
private <R> ImmutableList<R> unitIterator(Iterator<R> it) { if(it.hasNext()){ return cons(it.next(), LazySeq.fromIterator(it)); } return LazySeq.empty(); }
@Override public ImmutableList<T> take(long num) { if(num<=0){ return LazySeq.empty(); } return cons(head,tail.take(num-1)); }
@Override public NonEmptyList<T> replaceFirst(T currentElement, T newElement){ return ImmutableList.Some.super.replaceFirst(currentElement,newElement) .fold(cons->cons(cons.head(),cons.tail()),nil->this); }
default Option<NonEmptyList<T>> nonEmptyList(){ return Option.ofNullable(fold(c->NonEmptyList.cons(c.head(),c.tail()), nil->null)); }
@Override public NonEmptyList<T> prependAll(Iterable<? extends T> value) { LazySeq<T> list = LazySeq.narrow(lazySeq().prependAll(value)); return cons(list.fold(c->c.head(), nil->null),list.drop(1)); }
public static <T> NonEmptyList<T> of(T head, T... value){ LazySeq<T> list = LazySeq.of(value); return cons(head,list); } public static <T> NonEmptyList<T> of(T head){
public static <T> NonEmptyList<T> eager(T head, T... value){ Seq<T> list = Seq.of(value); return cons(head,list); } public static <T> NonEmptyList<T> eager(T head){
public static <T> NonEmptyList<T> eager(T head){ Seq<T> list = Seq.empty(); return cons(head,list); } public static <T> NonEmptyList<T> of(T head, ImmutableList<T> list){
default NonEmptyList<T> nonEmptyList(Supplier<T> s){ Iterator<T> it = iterator(); return NonEmptyList.cons(it.hasNext() ? it.next() : s.get(), LazySeq.fromIterator(it)); }
private <R> ImmutableList<R> unitIterator(Iterator<R> it) { if(it.hasNext()){ return cons(it.next(), LazySeq.fromIterator(it)); } return LazySeq.empty(); }
@Override public ImmutableList<T> take(long num) { if(num<=0){ return LazySeq.empty(); } return cons(head,tail.take(num-1)); }
@Override public NonEmptyList<T> replaceFirst(T currentElement, T newElement){ return ImmutableList.Some.super.replaceFirst(currentElement,newElement) .fold(cons->cons(cons.head(),cons.tail()),nil->this); }
@Override public NonEmptyList<T> prependAll(Iterable<? extends T> value) { LazySeq<T> list = LazySeq.narrow(lazySeq().prependAll(value)); return cons(list.fold(c->c.head(), nil->null),list.drop(1)); }