Skip to content

dual

Creates a function that can be used in a data-first or data-last style, making it suitable for usage in pipe or flow.

The first parameter to dual is the arity of the uncurried function.

ts
const sum = dual<
    (b: number) => (a: number) => number,
    (a: number, b: number) => number
>(2, (a, b) => a + b);

sum(2, 3); // 5
pipe(2, sum(3)); // 5
ts
const sum: {
    (b: number): (a: number) => number;
    (a: number, b: number): number;
} = dual(2, (a: number, b: number): number => a + b);

sum(2, 3); // 5
pipe(2, sum(3)); // 5