import { Arity3, Curry3 } from '../types' import { curry2 } from './curry2' export function curry3(fn: Arity3): Curry3 export function curry3(fn: Arity3): Curry3 export function curry3(fn: Arity3): Curry3 { function curried(a: A, b: B, c: C): any { switch (arguments.length) { case 1: return curry2((b: B, c: C) => fn(a, b, c)) case 2: return (c: C) => fn(a, b, c) default: return fn(a, b, c) } } return curried as Curry3 }