_curry2.js 791 B

12345678910111213141516171819202122232425262728293031
  1. import _curry1 from "./_curry1.js";
  2. import _isPlaceholder from "./_isPlaceholder.js";
  3. /**
  4. * Optimized internal two-arity curry function.
  5. *
  6. * @private
  7. * @category Function
  8. * @param {Function} fn The function to curry.
  9. * @return {Function} The curried function.
  10. */
  11. export default function _curry2(fn) {
  12. return function f2(a, b) {
  13. switch (arguments.length) {
  14. case 0:
  15. return f2;
  16. case 1:
  17. return _isPlaceholder(a) ? f2 : _curry1(function (_b) {
  18. return fn(a, _b);
  19. });
  20. default:
  21. return _isPlaceholder(a) && _isPlaceholder(b) ? f2 : _isPlaceholder(a) ? _curry1(function (_a) {
  22. return fn(_a, b);
  23. }) : _isPlaceholder(b) ? _curry1(function (_b) {
  24. return fn(a, _b);
  25. }) : fn(a, b);
  26. }
  27. };
  28. }