List comprehensions: Difference between revisions
Content deleted Content added
→JS ES6: Added an alternative expression of list comprehensions, in terms of bind (>>=) |
m →ES6 |
||
Line 1,103: | Line 1,103: | ||
// [(x, y, z) | x <- [1..n], y <- [x..n], z <- [y..n], x ^ 2 + y ^ 2 == z ^ 2] |
// [(x, y, z) | x <- [1..n], y <- [x..n], z <- [y..n], x ^ 2 + y ^ 2 == z ^ 2] |
||
return bind(enumFromTo(1, n), |
return bind(enumFromTo(1, n), |
||
x => bind(enumFromTo(x, n), |
x => bind(enumFromTo(x, n), |
||
y => bind(enumFromTo(y, n), |
|||
z => x * x + y * y === z * z ? [ |
|||
[x, y, z] |
[x, y, z] |
||
] : [] |
|||
))); |
|||
})(20);</lang> |
})(20);</lang> |
||
{{Out}} |
{{Out}} |
||
<lang JavaScript>[[3, 4, 5], [5, 12, 13], [6, 8, 10], [8, 15, 17], [9, 12, 15], [12, 16, 20]]</lang> |
<lang JavaScript>[[3, 4, 5], [5, 12, 13], [6, 8, 10], [8, 15, 17], [9, 12, 15], [12, 16, 20]]</lang> |