dashp
Version:
Utilities for monadic promises.
60 lines (51 loc) • 1.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.curry10 = exports.curry9 = exports.curry8 = exports.curry7 = exports.curry6 = exports.curry5 = exports.curry4 = exports.curry3 = exports.curry2 = void 0;
var _namefn = _interopRequireDefault(require("./namefn"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const ncurry = n => {
const localCurry = (name, f, ...args) => {
// This allows checkTypes to throw nicer error messages.
const localF = (0, _namefn.default)(`Future#${name}`, f);
const g = (...largs) => {
const rest = args.concat(largs);
if (rest.length < n) return localCurry(name, localF, ...rest); // This allows for the curried variadic function pattern.
return localF(...rest.slice(0, n));
};
return (0, _namefn.default)(`${name}-${n - args.length}`, g);
};
return localCurry;
};
const curry2 = ncurry(2);
exports.curry2 = curry2;
const curry3 = ncurry(3);
exports.curry3 = curry3;
const curry4 = ncurry(4);
exports.curry4 = curry4;
const curry5 = ncurry(5);
exports.curry5 = curry5;
const curry6 = ncurry(6);
exports.curry6 = curry6;
const curry7 = ncurry(7);
exports.curry7 = curry7;
const curry8 = ncurry(8);
exports.curry8 = curry8;
const curry9 = ncurry(9);
exports.curry9 = curry9;
const curry10 = ncurry(10);
exports.curry10 = curry10;
var _default = {
curry2,
curry3,
curry4,
curry5,
curry6,
curry7,
curry8,
curry9,
curry10
};
exports.default = _default;
//# sourceMappingURL=curry.js.map