/** * Functions and types for currying and partial application with * typescript code. */ export type F1 = (a: A) => B; export type F2 = (a: A, b: B) => C; export type F3 = (a: A, b: B, c: C) => C; export type F4 = (a: A, b: B, c: C, d: D) => E; export type F5 = (a: A, b: B, c: C, d: D, e: E) => F; export type F6 = (a: A, b: B, c: C, d: D, e: E, f: F) => G; export const f1 = (f: F1) => f; export const f2 = (f: F2) => (a: A) => (b: B) => f(a, b); export const f3 = (f: F3) => (a: A) => (b: B) => (c: C) => f(a, b, c); export const f4 = (f: F4) => (a: A) => (b: B) => (c: C) => (d: D) => f(a, b, c, d); export const f5 = (f: F5) => (a: A) => (b: B) => (c: C) => (d: D) => (e: E) => f(a, b, c, d, e); export const f6 = (f: F6) => (a: A) => (b: B) => (c: C) => (d: D) => (e: E) => (_f: F) => f(a, b, c, d, e, _f);