R
fn

compose

v0.0.10tested

Composes functions right-to-left: `compose(f, g)(x)` is `f(g(x))`

Example

ts
const calc = compose((n: number) => `= ${n}`, (n: number) => n * 2, (n: number) => n + 1);
calc(3); // '= 8'

Signatures

ts
export function compose<A extends any[], B>(ab: (...a: A) => B): (...a: A) => B;
ts
export function compose<A extends any[], B, C>(bc: (b: B) => C, ab: (...a: A) => B): (...a: A) => C;
ts
export function compose<A extends any[], B, C, D>(cd: (c: C) => D, bc: (b: B) => C, ab: (...a: A) => B): (...a: A) => D;
ts
export function compose<A extends any[], B, C, D, E>(de: (d: D) => E, cd: (c: C) => D, bc: (b: B) => C, ab: (...a: A) => B): (...a: A) => E;
ts
export function compose<A extends any[], B, C, D, E, F>(ef: (e: E) => F, de: (d: D) => E, cd: (c: C) => D, bc: (b: B) => C, ab: (...a: A) => B): (...a: A) => F;
ts
export function compose<A extends any[], B, C, D, E, F, G>(fg: (f: F) => G, ef: (e: E) => F, de: (d: D) => E, cd: (c: C) => D, bc: (b: B) => C, ab: (...a: A) => B): (...a: A) => G;
ts
export function compose<A extends any[], B, C, D, E, F, G, H>(gh: (g: G) => H, fg: (f: F) => G, ef: (e: E) => F, de: (d: D) => E, cd: (c: C) => D, bc: (b: B) => C, ab: (...a: A) => B): (...a: A) => H;

Parameters

ParameterTypeDescription
fns?AnyFunction[]The functions to compose; the last may take any number of arguments

Returns

AnyFunctionA function that runs the input through every function from last to first