-
Notifications
You must be signed in to change notification settings - Fork 0
/
reduceLongForm.js
46 lines (38 loc) · 1.15 KB
/
reduceLongForm.js
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
export function reduceWithReducer(reducer) {
return function reduceWithSeed(seed) {
return function reduceWithIterable(iterable) {
let accumulation = seed;
for (const value of iterable) {
accumulation = reducer(accumulation, value);
}
return accumulation;
}
}
}
//
// function reduce(reducer) {
// return function reduceSeed(seed) {
// return function reduceIterable(iterable) {
// let accumulation = seed;
//
// for (const value of iterable) {
// accumulation = reducer(accumulation, value);
// }
//
// return accumulation;
// }
// }
// }
// const dotted = reduceWithReducer(joinedWith('.'))('')([1, 2, 3]);
// //=> "1.2.3"
// console.log(`\n### dotted: \n\t${dotted}`);
//
// const normalReduce = reduce((acc, val) => acc.concat([val]))([1, 2, 3])([]);
// console.log(`\n### normalReduce: \n\t${normalReduce}`);
// //=> [1, 2, 3]
//
// // becomes:
//
// const reducedWithReduce = reduceWithReducer((acc, val) => acc.concat([val]))([])([1, 2, 3]);
// console.log(`\n### reducedWithReduce: \n\t${reducedWithReduce}`);
// //=> [1, 2, 3]