UNPKG

@dancrumb/fpish

Version:

FP-friendly classes for Typescript

43 lines (42 loc) 3.87 kB
/** * Takes a function,`fn` and a list of arguments `args`, and returns a new function `g` which, when called, * returns the result of `fn` called with `args` followed by whatever arguments are provided to `g` * * @param fn - a functions that takes up to 4 arguments * @param args - a list of up to 4 arguments */ export declare function partial<A1, R>(fn: (a: A1) => R, ...args: [A1]): () => R; export declare function partial<A1, R>(fn: (a: A1) => R): (a: A1) => R; export declare function partial<A1, A2, R>(fn: (a: A1, a2: A2) => R, ...args: [A1, A2]): () => R; export declare function partial<A1, A2, R>(fn: (a: A1, a2: A2) => R, ...args: [A1]): (a: A2) => R; export declare function partial<A1, A2, R>(fn: (a: A1, a2: A2) => R): (a1: A1, a2: A2) => R; export declare function partial<A1, A2, A3, R>(fn: (a: A1, a2: A2, a3: A3) => R, ...args: [A1, A2, A3]): () => R; export declare function partial<A1, A2, A3, R>(fn: (a: A1, a2: A2, a3: A3) => R, ...args: [A1, A2]): (a: A3) => R; export declare function partial<A1, A2, A3, R>(fn: (a: A1, a2: A2, a3: A3) => R, ...args: [A1]): (a2: A2, a3: A3) => R; export declare function partial<A1, A2, A3, R>(fn: (a: A1, a2: A2, a3: A3) => R): (a1: A1, a2: A2, a3: A3) => R; export declare function partial<A1, A2, A3, A4, R>(fn: (a: A1, a2: A2, a3: A3, a4: A4) => R, ...args: [A1, A2, A3, A4]): () => R; export declare function partial<A1, A2, A3, A4, R>(fn: (a: A1, a2: A2, a3: A3, a4: A4) => R, ...args: [A1, A2, A3]): (a4: A4) => R; export declare function partial<A1, A2, A3, A4, R>(fn: (a: A1, a2: A2, a3: A3, a4: A4) => R, ...args: [A1, A2]): (a3: A3, a4: A4) => R; export declare function partial<A1, A2, A3, A4, R>(fn: (a: A1, a2: A2, a3: A3, a4: A4) => R, ...args: [A1]): (a2: A2, a3: A3, a4: A4) => R; export declare function partial<A1, A2, A3, A4, R>(fn: (a: A1, a2: A2, a3: A3, a4: A4) => R): (a1: A1, a2: A2, a3: A3, a4: A4) => R; /** * Takes a function,`fn` and a list of arguments `args`, and returns a new function `g` which, when called, * returns the result of `fn` called with whatever arguments are provided to `g` * followed by `args` * @param fn - a functions that takes up to 4 arguments * @param args - a list of up to 4 arguments */ export declare function partialRight<A1, R>(fn: (a: A1) => R, ...args: [A1]): () => R; export declare function partialRight<A1, R>(fn: (a: A1) => R): (a: A1) => R; export declare function partialRight<A1, A2, R>(fn: (a: A1, a2: A2) => R, ...args: [A1, A2]): () => R; export declare function partialRight<A1, A2, R>(fn: (a: A1, a2: A2) => R, ...args: [A2]): (a: A1) => R; export declare function partialRight<A1, A2, R>(fn: (a: A1, a2: A2) => R): (a1: A1, a2: A2) => R; export declare function partialRight<A1, A2, A3, R>(fn: (a: A1, a2: A2, a3: A3) => R, ...args: [A1, A2, A3]): () => R; export declare function partialRight<A1, A2, A3, R>(fn: (a: A1, a2: A2, a3: A3) => R, ...args: [A2, A3]): (a1: A1) => R; export declare function partialRight<A1, A2, A3, R>(fn: (a: A1, a2: A2, a3: A3) => R, ...args: [A3]): (a1: A1, a2: A2) => R; export declare function partialRight<A1, A2, A3, R>(fn: (a: A1, a2: A2, a3: A3) => R): (a1: A1, a2: A2, a3: A3) => R; export declare function partialRight<A1, A2, A3, A4, R>(fn: (a: A1, a2: A2, a3: A3, a4: A4) => R, ...args: [A1, A2, A3, A4]): () => R; export declare function partialRight<A1, A2, A3, A4, R>(fn: (a: A1, a2: A2, a3: A3, a4: A4) => R, ...args: [A2, A3, A4]): (a1: A1) => R; export declare function partialRight<A1, A2, A3, A4, R>(fn: (a: A1, a2: A2, a3: A3, a4: A4) => R, ...args: [A3, A4]): (a1: A1, a2: A2) => R; export declare function partialRight<A1, A2, A3, A4, R>(fn: (a: A1, a2: A2, a3: A3, a4: A4) => R, ...args: [A4]): (a1: A1, a2: A2, a3: A3) => R; export declare function partialRight<A1, A2, A3, A4, R>(fn: (a: A1, a2: A2, a3: A3, a4: A4) => R): (a1: A1, a2: A2, a3: A3, a4: A4) => R;