Package software.kes.enhancediterables
Interface ImmutableNonEmptyFiniteIterable<A>
-
- Type Parameters:
A- the element type
- All Superinterfaces:
EnhancedIterable<A>,FiniteIterable<A>,com.jnape.palatable.lambda.functor.Functor<A,EnhancedIterable<?>>,ImmutableFiniteIterable<A>,ImmutableIterable<A>,ImmutableNonEmptyIterable<A>,java.lang.Iterable<A>,NonEmptyFiniteIterable<A>,NonEmptyIterable<A>
public interface ImmutableNonEmptyFiniteIterable<A> extends ImmutableFiniteIterable<A>, ImmutableNonEmptyIterable<A>, NonEmptyFiniteIterable<A>
AnEnhancedIterablethat is finite, safe from mutation, and guaranteed to contain at least one element.
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description default ImmutableNonEmptyFiniteIterable<A>concat(ImmutableFiniteIterable<A> other)Lazily concatenates anotherImmutableFiniteIterableto the end of thisImmutableNonEmptyFiniteIterable, yielding a newImmutableIterable.default <B> ImmutableNonEmptyFiniteIterable<com.jnape.palatable.lambda.adt.hlist.Tuple2<A,B>>cross(ImmutableNonEmptyFiniteIterable<B> other)Returns the lazily computed cartesian product of thisImmutableNonEmptyFiniteIterablewith anotherImmutableNonEmptyFiniteIterable.default ImmutableNonEmptyIterable<A>cycle()Returns an infiniteImmutableNonEmptyIterablethat repeatedly cycles thisImmutableNonEmptyFiniteIterable's elements, in order.default ImmutableNonEmptyFiniteIterable<A>distinct()Returns aImmutableNonEmptyFiniteIterableof the distinct values from thisImmutableNonEmptyFiniteIterable.default <B> ImmutableNonEmptyFiniteIterable<B>fmap(com.jnape.palatable.lambda.functions.Fn1<? super A,? extends B> f)Returns a newImmutableNonEmptyFiniteIterableby applying a function to all elements of thisImmutableNonEmptyFiniteIterable.static <A> ImmutableNonEmptyFiniteIterable<A>immutableNonEmptyFiniteIterable(A head, ImmutableFiniteIterable<A> tail)Creates anImmutableNonEmptyFiniteIterable.default ImmutableFiniteIterable<A>init()Returns anImmutableFiniteIterablecontaining all of elements of this one, except for the last element.default ImmutableNonEmptyFiniteIterable<A>intersperse(A separator)Returns a newImmutableNonEmptyFiniteIterablewith the provided separator value injected between each value of thisImmutableNonEmptyFiniteIterable.default ImmutableNonEmptyFiniteIterable<? extends ImmutableNonEmptyFiniteIterable<A>>magnetizeBy(com.jnape.palatable.lambda.functions.Fn2<A,A,java.lang.Boolean> predicate)Returns anIterableof contiguous groups of elements in thisImmutableNonEmptyFiniteIterablethat match a predicate pairwise.static <A> ImmutableNonEmptyFiniteIterable<A>of(A first, A... more)Creates anImmutableNonEmptyFiniteIterablecontaining the given elements.default ImmutableNonEmptyFiniteIterable<A>prepend(A element)Lazily prepends an element to the front of thisImmutableNonEmptyFiniteIterable, yielding a newImmutableNonEmptyFiniteIterable.default ImmutableNonEmptyFiniteIterable<A>prependAll(A separator)Returns a newImmutableNonEmptyFiniteIterablewith the provided separator value injected before each value of thisImmutableNonEmptyFiniteIterable.default ImmutableNonEmptyFiniteIterable<A>reverse()Returns a reversed representation of thisImmutableNonEmptyFiniteIterable.ImmutableFiniteIterable<A>tail()Returns anImmutableFiniteIterablecontaining all subsequent elements of this one beyond the first.default com.jnape.palatable.lambda.adt.Maybe<? extends ImmutableNonEmptyFiniteIterable<A>>toFinite()Always succeeds becauseImmutableNonEmptyFiniteIterables are always finite.default com.jnape.palatable.lambda.adt.Maybe<? extends ImmutableNonEmptyFiniteIterable<A>>toNonEmpty()Always succeeds becauseImmutableNonEmptyFiniteIterables are always non-empty.default <B,C>
ImmutableNonEmptyFiniteIterable<C>zipWith(com.jnape.palatable.lambda.functions.Fn2<A,B,C> fn, ImmutableNonEmptyIterable<B> other)Zips together thisImmutableNonEmptyFiniteIterablewith anotherImmutableNonEmptyIterableby applying a zipping function.-
Methods inherited from interface software.kes.enhancediterables.EnhancedIterable
concat, find, toArray, toCollection, zipWith, zipWith
-
Methods inherited from interface software.kes.enhancediterables.FiniteIterable
append, concat, cross, cross, drop, dropWhile, filter, foldLeft, foldRight, partition, size, slide, span, tails, takeWhile, zipWith
-
Methods inherited from interface software.kes.enhancediterables.ImmutableFiniteIterable
append, concat, cross, drop, dropWhile, filter, inits, partition, slide, span, tails, takeWhile, zipWith
-
Methods inherited from interface software.kes.enhancediterables.ImmutableIterable
concat, take, zipWith
-
Methods inherited from interface software.kes.enhancediterables.ImmutableNonEmptyIterable
concat, zipWith
-
Methods inherited from interface software.kes.enhancediterables.NonEmptyFiniteIterable
concat, concat, cross, last, reduceLeft, reduceRight, zipWith
-
-
-
-
Method Detail
-
tail
ImmutableFiniteIterable<A> tail()
Returns anImmutableFiniteIterablecontaining all subsequent elements of this one beyond the first.- Specified by:
tailin interfaceImmutableNonEmptyIterable<A>- Specified by:
tailin interfaceNonEmptyFiniteIterable<A>- Specified by:
tailin interfaceNonEmptyIterable<A>- Returns:
- an
ImmutableFiniteIterable<A>
-
concat
default ImmutableNonEmptyFiniteIterable<A> concat(ImmutableFiniteIterable<A> other)
Lazily concatenates anotherImmutableFiniteIterableto the end of thisImmutableNonEmptyFiniteIterable, yielding a newImmutableIterable.- Specified by:
concatin interfaceImmutableFiniteIterable<A>- Parameters:
other- the otherImmutableIterable- Returns:
- an
ImmutableIterable<A>
-
cross
default <B> ImmutableNonEmptyFiniteIterable<com.jnape.palatable.lambda.adt.hlist.Tuple2<A,B>> cross(ImmutableNonEmptyFiniteIterable<B> other)
Returns the lazily computed cartesian product of thisImmutableNonEmptyFiniteIterablewith anotherImmutableNonEmptyFiniteIterable.- Type Parameters:
B- the type of the otherImmutableNonEmptyFiniteIterable- Parameters:
other- anImmutableNonEmptyFiniteIterableof any type- Returns:
- a
ImmutableNonEmptyFiniteIterable<Tuple2<A, B>>
-
cycle
default ImmutableNonEmptyIterable<A> cycle()
Returns an infiniteImmutableNonEmptyIterablethat repeatedly cycles thisImmutableNonEmptyFiniteIterable's elements, in order.- Specified by:
cyclein interfaceFiniteIterable<A>- Specified by:
cyclein interfaceImmutableFiniteIterable<A>- Specified by:
cyclein interfaceNonEmptyFiniteIterable<A>- Returns:
- an
ImmutableNonEmptyIterable<A>
-
distinct
default ImmutableNonEmptyFiniteIterable<A> distinct()
Returns aImmutableNonEmptyFiniteIterableof the distinct values from thisImmutableNonEmptyFiniteIterable.- Specified by:
distinctin interfaceFiniteIterable<A>- Specified by:
distinctin interfaceImmutableFiniteIterable<A>- Specified by:
distinctin interfaceNonEmptyFiniteIterable<A>- Returns:
- a
ImmutableNonEmptyFiniteIterable<A>
-
fmap
default <B> ImmutableNonEmptyFiniteIterable<B> fmap(com.jnape.palatable.lambda.functions.Fn1<? super A,? extends B> f)
Returns a newImmutableNonEmptyFiniteIterableby applying a function to all elements of thisImmutableNonEmptyFiniteIterable.- Specified by:
fmapin interfaceEnhancedIterable<A>- Specified by:
fmapin interfaceFiniteIterable<A>- Specified by:
fmapin interfacecom.jnape.palatable.lambda.functor.Functor<A,EnhancedIterable<?>>- Specified by:
fmapin interfaceImmutableFiniteIterable<A>- Specified by:
fmapin interfaceImmutableIterable<A>- Specified by:
fmapin interfaceImmutableNonEmptyIterable<A>- Specified by:
fmapin interfaceNonEmptyFiniteIterable<A>- Specified by:
fmapin interfaceNonEmptyIterable<A>- Type Parameters:
B- the type returned byf- Parameters:
f- a function fromAtoB. This function should be referentially transparent and not perform side-effects. It may be called zero or more times for each element.- Returns:
- an
ImmutableNonEmptyFiniteIterable<B>
-
init
default ImmutableFiniteIterable<A> init()
Returns anImmutableFiniteIterablecontaining all of elements of this one, except for the last element.- Specified by:
initin interfaceNonEmptyFiniteIterable<A>- Returns:
- an
ImmutableFiniteIterable<A>
-
intersperse
default ImmutableNonEmptyFiniteIterable<A> intersperse(A separator)
Returns a newImmutableNonEmptyFiniteIterablewith the provided separator value injected between each value of thisImmutableNonEmptyFiniteIterable.If this
ImmutableNonEmptyFiniteIterablecontains only one element, it is left untouched.- Specified by:
interspersein interfaceEnhancedIterable<A>- Specified by:
interspersein interfaceFiniteIterable<A>- Specified by:
interspersein interfaceImmutableFiniteIterable<A>- Specified by:
interspersein interfaceImmutableIterable<A>- Specified by:
interspersein interfaceImmutableNonEmptyIterable<A>- Specified by:
interspersein interfaceNonEmptyFiniteIterable<A>- Specified by:
interspersein interfaceNonEmptyIterable<A>- Parameters:
separator- the separator value- Returns:
- an
ImmutableNonEmptyFiniteIterable<A>
-
magnetizeBy
default ImmutableNonEmptyFiniteIterable<? extends ImmutableNonEmptyFiniteIterable<A>> magnetizeBy(com.jnape.palatable.lambda.functions.Fn2<A,A,java.lang.Boolean> predicate)
Returns anIterableof contiguous groups of elements in thisImmutableNonEmptyFiniteIterablethat match a predicate pairwise.- Specified by:
magnetizeByin interfaceEnhancedIterable<A>- Specified by:
magnetizeByin interfaceFiniteIterable<A>- Specified by:
magnetizeByin interfaceImmutableFiniteIterable<A>- Specified by:
magnetizeByin interfaceImmutableIterable<A>- Specified by:
magnetizeByin interfaceImmutableNonEmptyIterable<A>- Specified by:
magnetizeByin interfaceNonEmptyFiniteIterable<A>- Specified by:
magnetizeByin interfaceNonEmptyIterable<A>- Parameters:
predicate- the predicate function. This function should be referentially transparent and not perform side-effects. It may be called zero or more times for each element.- Returns:
- an
ImmutableNonEmptyFiniteIterable<ImmutableNonEmptyFiniteIterable<A>>containing the contiguous groups
-
prepend
default ImmutableNonEmptyFiniteIterable<A> prepend(A element)
Lazily prepends an element to the front of thisImmutableNonEmptyFiniteIterable, yielding a newImmutableNonEmptyFiniteIterable.- Specified by:
prependin interfaceEnhancedIterable<A>- Specified by:
prependin interfaceFiniteIterable<A>- Specified by:
prependin interfaceImmutableFiniteIterable<A>- Specified by:
prependin interfaceImmutableIterable<A>- Parameters:
element- the element to prepend- Returns:
- a
ImmutableNonEmptyFiniteIterable<A>
-
prependAll
default ImmutableNonEmptyFiniteIterable<A> prependAll(A separator)
Returns a newImmutableNonEmptyFiniteIterablewith the provided separator value injected before each value of thisImmutableNonEmptyFiniteIterable.- Specified by:
prependAllin interfaceEnhancedIterable<A>- Specified by:
prependAllin interfaceFiniteIterable<A>- Specified by:
prependAllin interfaceImmutableFiniteIterable<A>- Specified by:
prependAllin interfaceImmutableIterable<A>- Specified by:
prependAllin interfaceImmutableNonEmptyIterable<A>- Specified by:
prependAllin interfaceNonEmptyFiniteIterable<A>- Specified by:
prependAllin interfaceNonEmptyIterable<A>- Parameters:
separator- the separator value- Returns:
- an
ImmutableNonEmptyFiniteIterable<A>
-
reverse
default ImmutableNonEmptyFiniteIterable<A> reverse()
Returns a reversed representation of thisImmutableNonEmptyFiniteIterable.Note that reversing is deferred until the returned
Iterableis iterated.- Specified by:
reversein interfaceFiniteIterable<A>- Specified by:
reversein interfaceImmutableFiniteIterable<A>- Specified by:
reversein interfaceNonEmptyFiniteIterable<A>- Returns:
- an
ImmutableNonEmptyFiniteIterable<A>
-
toFinite
default com.jnape.palatable.lambda.adt.Maybe<? extends ImmutableNonEmptyFiniteIterable<A>> toFinite()
Always succeeds becauseImmutableNonEmptyFiniteIterables are always finite.- Specified by:
toFinitein interfaceEnhancedIterable<A>- Specified by:
toFinitein interfaceFiniteIterable<A>- Specified by:
toFinitein interfaceImmutableFiniteIterable<A>- Specified by:
toFinitein interfaceImmutableIterable<A>- Specified by:
toFinitein interfaceImmutableNonEmptyIterable<A>- Specified by:
toFinitein interfaceNonEmptyFiniteIterable<A>- Specified by:
toFinitein interfaceNonEmptyIterable<A>- Returns:
- this
ImmutableNonEmptyFiniteIterablewrapped in a `just`
-
toNonEmpty
default com.jnape.palatable.lambda.adt.Maybe<? extends ImmutableNonEmptyFiniteIterable<A>> toNonEmpty()
Always succeeds becauseImmutableNonEmptyFiniteIterables are always non-empty.- Specified by:
toNonEmptyin interfaceEnhancedIterable<A>- Specified by:
toNonEmptyin interfaceFiniteIterable<A>- Specified by:
toNonEmptyin interfaceImmutableFiniteIterable<A>- Specified by:
toNonEmptyin interfaceImmutableIterable<A>- Specified by:
toNonEmptyin interfaceImmutableNonEmptyIterable<A>- Specified by:
toNonEmptyin interfaceNonEmptyFiniteIterable<A>- Specified by:
toNonEmptyin interfaceNonEmptyIterable<A>- Returns:
- this
ImmutableNonEmptyFiniteIterablewrapped in a `just`
-
zipWith
default <B,C> ImmutableNonEmptyFiniteIterable<C> zipWith(com.jnape.palatable.lambda.functions.Fn2<A,B,C> fn, ImmutableNonEmptyIterable<B> other)
Zips together thisImmutableNonEmptyFiniteIterablewith anotherImmutableNonEmptyIterableby applying a zipping function.Applies the function to the successive elements of each
Iterableuntil one of them runs out of elements.- Specified by:
zipWithin interfaceImmutableNonEmptyIterable<A>- Type Parameters:
B- the element type of the otherIterableC- the element type of the result- Parameters:
fn- the zipping function. Not null. This function should be referentially transparent and not perform side-effects. It may be called zero or more times for each element.other- the otherIterable- Returns:
- an
ImmutableNonEmptyFiniteIterable<C>
-
immutableNonEmptyFiniteIterable
static <A> ImmutableNonEmptyFiniteIterable<A> immutableNonEmptyFiniteIterable(A head, ImmutableFiniteIterable<A> tail)
Creates anImmutableNonEmptyFiniteIterable.- Type Parameters:
A- the element type- Parameters:
head- the first elementtail- the remaining elements. May be empty.- Returns:
- a
ImmutableNonEmptyFiniteIterable<A>
-
of
@SafeVarargs static <A> ImmutableNonEmptyFiniteIterable<A> of(A first, A... more)
Creates anImmutableNonEmptyFiniteIterablecontaining the given elements.- Type Parameters:
A- the element type- Parameters:
first- the first elementmore- the remaining elements- Returns:
- an
ImmutableNonEmptyFiniteIterable<A>
-
-