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 multiplicandA
s and multiplierB
s.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 private
CartesianProduct()
-
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)
-
-