Another update from ingydotnet^djgoku
This commit is contained in:
parent
91df62d461
commit
948b86eafa
7604 changed files with 108452 additions and 22726 deletions
31
Task/List-comprehensions/JavaScript/list-comprehensions-2.js
Normal file
31
Task/List-comprehensions/JavaScript/list-comprehensions-2.js
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
(function(n) {
|
||||
|
||||
// USING A LIST MONAD DIRECTLY, WITHOUT LIST COMPREHENSION NOTATION
|
||||
|
||||
return mb( rng(1, n), function(x) {
|
||||
return mb( rng(1 + x, n), function(y) {
|
||||
return mb( rng(1 + y, n), function(z) {
|
||||
|
||||
return ( x * x + y * y === z * z ) ? mReturn([x, y, z]) : [];
|
||||
|
||||
})})});
|
||||
|
||||
/******************************************************************/
|
||||
|
||||
// Monadic bind (chain) for lists
|
||||
function mb(xs, f) {
|
||||
return [].concat.apply([], xs.map(f));
|
||||
}
|
||||
|
||||
// Monadic return (inject) for lists
|
||||
function mReturn(a) {
|
||||
return [a];
|
||||
}
|
||||
|
||||
function rng(m, n) {
|
||||
return Array.apply(null, Array(n - m + 1)).map(
|
||||
function (x, i) { return m + i; }
|
||||
);
|
||||
}
|
||||
|
||||
})(100);
|
||||
Loading…
Add table
Add a link
Reference in a new issue