-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcompose.js
More file actions
31 lines (26 loc) · 699 Bytes
/
compose.js
File metadata and controls
31 lines (26 loc) · 699 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
"use strict";
var compose = function compose() {
for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {
fns[_key] = arguments[_key];
}
return fns.reduce(function (f, g) {
return function () {
return f(g.apply(undefined, arguments));
};
});
};
var sequence = function() {
var args = Array.prototype.slice.call(arguments).reverse();
return compose.apply(null, args);
}
var add10 = function(value) {
return value + 10;
}
var multiply5 = function(value) {
return value * 5;
}
var add10Multiply5 = sequence(add10, multiply5);
// 20 = (2 + 10) * 5
console.log(add10Multiply5(2));
// 30 = (4 + 10 ) * 5
console.log(add10Multiply5(4));