pragmatic-fp-ts
Version:
Opinionated functional programming library with easy use in mind
15 lines (10 loc) • 369 B
text/typescript
export function xprod<A, B>(a: A[], b: B[]): [A, B][];
export function xprod<A>(a: A[]): <B>(b: B[]) => [A, B][];
export function xprod<A, B>(a: A[], b?: B[]) {
if (arguments.length === 1) return (b_: B[]) => xprod(a, b_);
const result: [A, B][] = [];
(a || []).forEach((aa) => {
(b || []).forEach((bb) => result.push([aa, bb]));
});
return result;
}