49 lines
1.0 KiB
JavaScript
49 lines
1.0 KiB
JavaScript
exports = module.exports = ap;
|
|
function ap (args, fn) {
|
|
return function () {
|
|
var rest = [].slice.call(arguments)
|
|
, first = args.slice()
|
|
first.push.apply(first, rest)
|
|
return fn.apply(this, first);
|
|
};
|
|
}
|
|
|
|
exports.pa = pa;
|
|
function pa (args, fn) {
|
|
return function () {
|
|
var rest = [].slice.call(arguments)
|
|
rest.push.apply(rest, args)
|
|
return fn.apply(this, rest);
|
|
};
|
|
}
|
|
|
|
exports.apa = apa;
|
|
function apa (left, right, fn) {
|
|
return function () {
|
|
return fn.apply(this,
|
|
left.concat.apply(left, arguments).concat(right)
|
|
);
|
|
};
|
|
}
|
|
|
|
exports.partial = partial;
|
|
function partial (fn) {
|
|
var args = [].slice.call(arguments, 1);
|
|
return ap(args, fn);
|
|
}
|
|
|
|
exports.partialRight = partialRight;
|
|
function partialRight (fn) {
|
|
var args = [].slice.call(arguments, 1);
|
|
return pa(args, fn);
|
|
}
|
|
|
|
exports.curry = curry;
|
|
function curry (fn) {
|
|
return partial(partial, fn);
|
|
}
|
|
|
|
exports.curryRight = function curryRight (fn) {
|
|
return partial(partialRight, fn);
|
|
}
|