20 lines
438 B
JavaScript
20 lines
438 B
JavaScript
// Monadic bind (chain) for lists
|
|
function chain(xs, f) {
|
|
return [].concat.apply([], xs.map(f));
|
|
}
|
|
|
|
// [m..n]
|
|
function range(m, n) {
|
|
return Array.apply(null, Array(n - m + 1)).map(function (x, i) {
|
|
return m + i;
|
|
});
|
|
}
|
|
|
|
function factors_naive(n) {
|
|
return chain( range(1, n), function (x) { // monadic chain/bind
|
|
return n % x ? [] : [x]; // monadic fail or inject/return
|
|
});
|
|
}
|
|
|
|
factors_naive(6)
|