UNPKG

pragmatic-fp-ts

Version:

Opinionated functional programming library with easy use in mind

12 lines (9 loc) 469 B
import { Init, Last } from "./types.ts" type FlipLastTwo<T extends any []> = T extends [...args: infer A, b: infer B, c: infer C] ? [...args: A, c: C,b: B] : T export function flip <T extends any [], U>(f: (...args: T) => U) { type FlippedArgs = FlipLastTwo<T> return (...args: Init<FlippedArgs>) => (x: Last<FlippedArgs>) => { const argv: T = [...args.slice (0, args.length -1), x, args [args.length - 1]] as any; return f (...argv) } }