Guest User

Untitled

a guest
Oct 17th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.02 KB | None | 0 0
  1. const Compose = (...functions) => {
  2. return val => {
  3. let i = 0,
  4. len = functions.length,
  5. fnResult = functions[i](val);
  6.  
  7. while (++i < len) {
  8. fnResult = functions[i](fnResult);
  9. }
  10.  
  11. return fnResult;
  12. };
  13. };
  14.  
  15. const add7 = num => num + 7;
  16. const squared = num => num * num;
  17. const subtract13 = num => num - 13;
  18.  
  19. const add7ThenSquareThenSubtract13 = Compose(add7, squared, subtract13);
  20.  
  21. add7ThenSquareThenSubtract13(5); // 131
  22. add7ThenSquareThenSubtract13(0); // 2
  23. add7ThenSquareThenSubtract13(100); // 11436
  24.  
  25. // Let's say 'val' is 5.
  26.  
  27. // 1. Call add7(val), result is 12.
  28. // 2. Call squared(12), result is 144
  29. // 3. Call subtract13(144), result is 131
  30.  
  31. // subtract13( squared( add7(val) ) ) === 131
  32.  
  33. const Compose = (...functions) => {
  34. return val => {
  35. return functions.reduce((prevVal, currFunc) => {
  36. return currFunc(prevVal);
  37. }, functions[0](val));
  38. };
  39. };
  40.  
  41. const Compose = (...args) => v => args.reduce((p, c) => c(p), v)
Add Comment
Please, Sign In to add comment