com.jnape.palatable.lambda.monoid.builtin.Concat Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of lambda Show documentation
Show all versions of lambda Show documentation
Functional patterns for Java
package com.jnape.palatable.lambda.monoid.builtin;
import com.jnape.palatable.lambda.functions.Fn1;
import com.jnape.palatable.lambda.iterators.ConcatenatingIterator;
import com.jnape.palatable.lambda.monoid.Monoid;
import java.util.Collections;
/**
* The {@link Monoid} instance formed under concatenation for an arbitrary {@link Iterable}.
*
* @see Monoid
*/
public final class Concat implements Monoid> {
private static final Concat INSTANCE = new Concat();
private Concat() {
}
@Override
public Iterable identity() {
return Collections::emptyIterator;
}
@Override
public Iterable apply(Iterable xs, Iterable ys) {
return () -> new ConcatenatingIterator<>(xs, ys);
}
@SuppressWarnings("unchecked")
public static Concat concat() {
return INSTANCE;
}
public static Fn1, Iterable> concat(Iterable xs) {
return Concat.concat().apply(xs);
}
public static Iterable concat(Iterable xs, Iterable ys) {
return concat(xs).apply(ys);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy