47 lines
931 B
JavaScript
47 lines
931 B
JavaScript
var map = function (fn, list) {
|
|
return list.map(fn);
|
|
},
|
|
|
|
foldr = function (fn, acc, list) {
|
|
var listr = list.slice();
|
|
listr.reverse();
|
|
|
|
return listr.reduce(fn, acc);
|
|
},
|
|
|
|
traverse = function (list, fn) {
|
|
return list.forEach(fn);
|
|
};
|
|
|
|
var range = function (m, n) {
|
|
return Array.apply(null, Array(n - m + 1)).map(
|
|
function (x, i) {
|
|
return m + i;
|
|
}
|
|
);
|
|
};
|
|
|
|
// --> [false, false, false, false, false, true, true, true, true, true]
|
|
map(function (x) {
|
|
return x > 5;
|
|
}, range(1, 10));
|
|
|
|
// --> ["Apples", "Oranges", "Mangos", "Pears"]
|
|
map(function (x) {
|
|
return x + 's';
|
|
}, ["Apple", "Orange", "Mango", "Pear"])
|
|
|
|
// --> 55
|
|
foldr(function (acc, x) {
|
|
return acc + x;
|
|
}, 0, range(1, 10))
|
|
|
|
|
|
traverse(["Apple", "Orange", "Mango", "Pear"], function (x) {
|
|
console.log(x);
|
|
})
|
|
/* Apple */
|
|
/* Orange */
|
|
/* Mango */
|
|
/* Pear */
|