Class CartesianProduct<A,B>
- java.lang.Object
-
- com.jnape.palatable.lambda.functions.builtin.fn2.CartesianProduct<A,B>
-
- Type Parameters:
A- The multiplicand Iterable element typeB- The multiplier Iterable element type
- All Implemented Interfaces:
Fn1<java.lang.Iterable<A>,Fn1<java.lang.Iterable<B>,java.lang.Iterable<Tuple2<A,B>>>>,Fn2<java.lang.Iterable<A>,java.lang.Iterable<B>,java.lang.Iterable<Tuple2<A,B>>>,Applicative<Fn1<java.lang.Iterable<B>,java.lang.Iterable<Tuple2<A,B>>>,Fn1<java.lang.Iterable<A>,?>>,Cartesian<java.lang.Iterable<A>,Fn1<java.lang.Iterable<B>,java.lang.Iterable<Tuple2<A,B>>>,Fn1<?,?>>,Cocartesian<java.lang.Iterable<A>,Fn1<java.lang.Iterable<B>,java.lang.Iterable<Tuple2<A,B>>>,Fn1<?,?>>,Contravariant<java.lang.Iterable<A>,Profunctor<?,Fn1<java.lang.Iterable<B>,java.lang.Iterable<Tuple2<A,B>>>,Fn1<?,?>>>,Functor<Fn1<java.lang.Iterable<B>,java.lang.Iterable<Tuple2<A,B>>>,Fn1<java.lang.Iterable<A>,?>>,Profunctor<java.lang.Iterable<A>,Fn1<java.lang.Iterable<B>,java.lang.Iterable<Tuple2<A,B>>>,Fn1<?,?>>,Monad<Fn1<java.lang.Iterable<B>,java.lang.Iterable<Tuple2<A,B>>>,Fn1<java.lang.Iterable<A>,?>>,MonadReader<java.lang.Iterable<A>,Fn1<java.lang.Iterable<B>,java.lang.Iterable<Tuple2<A,B>>>,Fn1<java.lang.Iterable<A>,?>>,MonadRec<Fn1<java.lang.Iterable<B>,java.lang.Iterable<Tuple2<A,B>>>,Fn1<java.lang.Iterable<A>,?>>,MonadWriter<java.lang.Iterable<A>,Fn1<java.lang.Iterable<B>,java.lang.Iterable<Tuple2<A,B>>>,Fn1<java.lang.Iterable<A>,?>>
public final class CartesianProduct<A,B> extends java.lang.Object implements Fn2<java.lang.Iterable<A>,java.lang.Iterable<B>,java.lang.Iterable<Tuple2<A,B>>>
Lazily compute the cartesian product of anIterable<A>andIterable<B>, returning anIterable<Tuple2<A, B>>, the products as tuples of multiplicandAs and multiplierBs.Note that this algorithm exhaustively pairs all elements from
Iterable<B>to the first element ofIterable<A>before advancing to the next element ofIterable<A>, so ifIterable<B>is infinite, only one element fromIterable<A>will ever be paired.- See Also:
Zip
-
-
Field Summary
Fields Modifier and Type Field Description private static CartesianProduct<?,?>INSTANCE
-
Constructor Summary
Constructors Modifier Constructor Description privateCartesianProduct()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static <A,B>
CartesianProduct<A,B>cartesianProduct()static <A,B>
Fn1<java.lang.Iterable<B>,java.lang.Iterable<Tuple2<A,B>>>cartesianProduct(java.lang.Iterable<A> as)static <A,B>
java.lang.Iterable<Tuple2<A,B>>cartesianProduct(java.lang.Iterable<A> as, java.lang.Iterable<B> bs)java.lang.Iterable<Tuple2<A,B>>checkedApply(java.lang.Iterable<A> as, java.lang.Iterable<B> bs)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.jnape.palatable.lambda.functions.Fn1
andThen, carry, cartesian, censor, choose, cocartesian, diMap, diMapR, discardL, flatMap, fmap, lazyZip, listens, local, pure, self, thunk, toFunction, trampolineM, zip, zip
-
-
-
-
Field Detail
-
INSTANCE
private static final CartesianProduct<?,?> INSTANCE
-
-
Method Detail
-
checkedApply
public java.lang.Iterable<Tuple2<A,B>> checkedApply(java.lang.Iterable<A> as, java.lang.Iterable<B> bs)
-
cartesianProduct
public static <A,B> CartesianProduct<A,B> cartesianProduct()
-
cartesianProduct
public static <A,B> Fn1<java.lang.Iterable<B>,java.lang.Iterable<Tuple2<A,B>>> cartesianProduct(java.lang.Iterable<A> as)
-
cartesianProduct
public static <A,B> java.lang.Iterable<Tuple2<A,B>> cartesianProduct(java.lang.Iterable<A> as, java.lang.Iterable<B> bs)
-
-