Advertisement
Guest User

Untitled

a guest
Jan 21st, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.65 KB | None | 0 0
  1. const curry = fn => {
  2. const arity = fn.length;
  3.  
  4. return (...args) => {
  5. if (args.length >= arity) {
  6. return fn(...args);
  7. } else {
  8. return (...secondArgs) => {
  9. return fn(...[...args, ...secondArgs]);
  10. }
  11. }
  12. }
  13. };
  14.  
  15. const sum = (a, b) => a + b;
  16. const addOne = curry(sum)(1);
  17. const addNine = curry(sum)(9);
  18.  
  19. addOne(4); // 5
  20. addNine(1); // 10
  21.  
  22. // ======== //
  23.  
  24. function partialApp(fn, ...args) {
  25. if (args.length === fn.length) fn(...args);
  26. return partialApp.bind(this, fn, ...args);
  27. }
  28.  
  29. partialApplication(sum, 1, 2); // 3
  30. partialApplication(sum)(1)(2); // 3
  31. partialApplication(sum)(1, 2); // 3
  32. partialApplication(sum, 1)(2); // 3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement