crocks
Version:
A collection of well known Algebraic Datatypes for your utter enjoyment.
25 lines (18 loc) • 596 B
JavaScript
/** @license ISC License (c) copyright 2017 original and current authors */
/** @author Ian Hofmann-Hicks (evil) */
var curry = require('../core/curry')
var isFunction = require('../core/isFunction')
// partial : ((* -> c), *) -> * -> c
function partial() {
var args = [], len = arguments.length;
while ( len-- ) args[ len ] = arguments[ len ];
var fn = args[0]
var xs = args.slice(1)
if(!isFunction(fn)) {
throw new TypeError('partial: Function required for first argument')
}
return curry(
Function.bind.apply(fn, [ null ].concat(xs))
)
}
module.exports = partial