UNPKG

rubico

Version:

[a]synchronous functional programming

55 lines (49 loc) 1.11 kB
const __ = require('./placeholder') // argument resolver for curry3 const curry3ResolveArg0 = ( baseFunc, arg1, arg2, ) => function arg0Resolver(arg0) { return baseFunc(arg0, arg1, arg2) } // argument resolver for curry3 const curry3ResolveArg1 = ( baseFunc, arg0, arg2, ) => function arg1Resolver(arg1) { return baseFunc(arg0, arg1, arg2) } // argument resolver for curry3 const curry3ResolveArg2 = ( baseFunc, arg0, arg1, ) => function arg2Resolver(arg2) { return baseFunc(arg0, arg1, arg2) } /** * @name curry3 * * @synopsis * ```coffeescript [specscript] * __ = Symbol('placeholder') * * curry3( * baseFunc function, * arg0 __|any, * arg1 __|any, * arg2 __|any * ) -> function * ``` * * @description * Curry a 3-ary function. * * Note: exactly one argument must be the placeholder */ const curry3 = function (baseFunc, arg0, arg1, arg2) { if (arg0 == __) { return curry3ResolveArg0(baseFunc, arg1, arg2) } if (arg1 == __) { return curry3ResolveArg1(baseFunc, arg0, arg2) } return curry3ResolveArg2(baseFunc, arg0, arg1) } module.exports = curry3