22 lines
518 B
JavaScript
22 lines
518 B
JavaScript
(function (xs) {
|
|
'use strict';
|
|
|
|
// foldl :: (b -> a -> b) -> b -> [a] -> b
|
|
function foldl(f, acc, xs) {
|
|
return xs.reduce(f, acc);
|
|
}
|
|
|
|
// foldr :: (b -> a -> b) -> b -> [a] -> b
|
|
function foldr(f, acc, xs) {
|
|
return xs.reduceRight(f, acc);
|
|
}
|
|
|
|
// Test folds in both directions
|
|
return [foldl, foldr].map(function (f) {
|
|
return f(function (acc, x) {
|
|
return acc + (x * 2).toString() + ' ';
|
|
}, [], xs);
|
|
});
|
|
|
|
})([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
|