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
}