cross<A, B, R> function

List<R> cross<A, B, R>(
  1. Iterable<A> a,
  2. Iterable<B> b,
  3. R combine(
    1. A,
    2. B
    )
)

Returns the cross product of two iterables.

Implementation

List<R> cross<A, B, R>(
  Iterable<A> a,
  Iterable<B> b,
  R Function(A, B) combine,
) {
  final result = <R>[];
  for (final ai in a) {
    for (final bi in b) {
      result.add(combine(ai, bi));
    }
  }
  return result;
}