import type { CurrAuto2, CurrAuto2Rev, CurrAuto3, CurrAuto3Rev, CurrAuto4, CurrAuto4Rev, CurrAuto5, CurrAuto5Rev, CurrAuto6, CurrAuto6Rev, CurrAuto7, CurrAuto7Rev, CurrAuto8, CurrAuto8Rev } from '../Gymnastics/currauto.type.js'; /** @curry */ declare function curr(fn: (arg: T) => V): (arg: T) => V; declare function curr(fn: (arg: T, arg2: U) => V, level: 2): (arg: T) => (arg2: U) => V; declare function curr(fn: (arg: T, arg2: U, arg3: V) => W, level: 3): (arg: T) => (arg2: U) => (arg3: V) => W; declare function curr(fn: (arg: T, arg2: U, arg3: V, arg4: W) => X, level: 4): (arg: T) => (arg2: U) => (arg3: V) => (arg4: W) => X; declare function curr(fn: (arg: T, arg2: U, arg3: V, arg4: W, arg5: X) => Y, level: 5): (arg: T) => (arg2: U) => (arg3: V) => (arg4: W) => (arg5: X) => Y; declare function curr(fn: (arg: T, arg2: U, arg3: V, arg4: W, arg5: X, arg6: Y) => Z, level: 6): (arg: T) => (arg2: U) => (arg3: V) => (arg4: W) => (arg5: X) => (arg6: Y) => Z; declare function curr(fn: (arg: T, arg2: U, arg3: V, arg4: W, arg5: X, arg6: Y, arg7: Z) => A, level: 7): (arg: T) => (arg2: U) => (arg3: V) => (arg4: W) => (arg5: X) => (arg6: Y) => (arg7: Z) => A; declare function curr(fn: (arg: T, arg2: U, arg3: V, arg4: W, arg5: X, arg6: Y, arg7: Z, arg8: A) => B, level: 8): (arg: T) => (arg2: U) => (arg3: V) => (arg4: W) => (arg5: X) => (arg6: Y) => (arg7: Z) => (arg8: A) => B; /** @curry_reverse */ declare function currse(fn: (arg: T) => V): (arg: T) => V; declare function currse(fn: (arg: T, arg2: U) => V, level: 2): (arg: U) => (arg2: T) => V; declare function currse(fn: (arg: T, arg2: U, arg3: V) => W, level: 3): (arg3: V) => (arg2: U) => (arg: T) => W; declare function currse(fn: (arg: T, arg2: U, arg3: V, arg4: W) => X, level: 4): (arg4: W) => (arg3: V) => (arg2: U) => (arg: T) => X; declare function currse(fn: (arg: T, arg2: U, arg3: V, arg4: W, arg5: X) => Y, level: 5): (arg5: X) => (arg4: W) => (arg3: V) => (arg2: U) => (arg: T) => Y; declare function currse(fn: (arg: T, arg2: U, arg3: V, arg4: W, arg5: X, arg6: Y) => Z, level: 6): (arg6: Y) => (arg5: X) => (arg4: W) => (arg3: V) => (arg2: U) => (arg: T) => Z; declare function currse(fn: (arg: T, arg2: U, arg3: V, arg4: W, arg5: X, arg6: Y, arg7: Z) => A, level: 7): (arg7: Z) => (arg6: Y) => (arg5: X) => (arg4: W) => (arg3: V) => (arg2: U) => (arg: T) => A; declare function currse(fn: (arg: T, arg2: U, arg3: V, arg4: W, arg5: X, arg6: Y, arg7: Z, arg8: A) => B, level: 8): (arg8: A) => (arg7: Z) => (arg6: Y) => (arg5: X) => (arg4: W) => (arg3: V) => (arg2: U) => (arg: T) => B; /** @auto */ declare function currauto(fn: (arg: T) => V): (arg: T) => V; declare function currauto(fn: (arg: T, arg2: U) => V, level: 2): CurrAuto2; declare function currauto(fn: (arg: T, arg2: U, arg3: V) => W, level: 3): CurrAuto3; declare function currauto(fn: (arg: T, arg2: U, arg3: V, arg4: W) => X, level: 4): CurrAuto4; declare function currauto(fn: (arg: T, arg2: U, arg3: V, arg4: W, arg5: X) => Y, level: 5): CurrAuto5; declare function currauto(fn: (arg: T, arg2: U, arg3: V, arg4: W, arg5: X, arg6: Y) => Z, level: 6): CurrAuto6; declare function currauto(fn: (arg: T, arg2: U, arg3: V, arg4: W, arg5: X, arg6: Y, arg7: Z) => A, level: 7): CurrAuto7; declare function currauto(fn: (arg: T, arg2: U, arg3: V, arg4: W, arg5: X, arg6: Y, arg7: Z, arg8: A) => B, level: 8): CurrAuto8; /** @curry_reverse_auto */ declare function curr_auto_rev(fn: (arg: T) => V): (arg: T) => V; declare function curr_auto_rev(fn: (arg: T, arg2: U) => V, level: 2): CurrAuto2Rev; declare function curr_auto_rev(fn: (arg: T, arg2: U, arg3: V) => W, level: 3): CurrAuto3Rev; declare function curr_auto_rev(fn: (arg: T, arg2: U, arg3: V, arg4: W) => X, level: 4): CurrAuto4Rev; declare function curr_auto_rev(fn: (arg: T, arg2: U, arg3: V, arg4: W, arg5: X) => Y, level: 5): CurrAuto5Rev; declare function curr_auto_rev(fn: (arg: T, arg2: U, arg3: V, arg4: W, arg5: X, arg6: Y) => Z, level: 6): CurrAuto6Rev; declare function curr_auto_rev(fn: (arg: T, arg2: U, arg3: V, arg4: W, arg5: X, arg6: Y, arg7: Z) => A, level: 7): CurrAuto7Rev; declare function curr_auto_rev(fn: (arg: T, arg2: U, arg3: V, arg4: W, arg5: X, arg6: Y, arg7: Z, arg8: A) => B, level: 8): CurrAuto8Rev; /** ## `curry` : 函数科里化 @description 将函数的`参数传递`拆分成`多个函数调用`的形式,直到所有参数都传递完毕,才会执行原函数 @example ```ts // 一层 Level curry(默认形式) const add = (a: number) => (b: number) => a / b const add1 = curry(add)(1) assertEquals(add1(2), 0.5) // 多层 Level curry const first = (a: number, a1: number) => (b: number) => (a + a1) / b const cr_f = curry(first, 2)(1)(3) assertEquals(cr_f(2), 2) ``` @category Function */ export declare const curry: typeof curr & { reverse: typeof currse; auto: typeof currauto; auto_reverse: typeof curr_auto_rev; }; export {}; //# sourceMappingURL=curry.d.ts.map