gpt4 book ai didi

javascript - 是否可以在 Javascript 中完成这个简单的 Haskell 赋值?

转载 作者:行者123 更新时间:2023-11-29 10:35:56 25 4
gpt4 key购买 nike

我正在浏览 this tutorial来自 learnyouahaskell.com,它展示了如何使用以下代码制作三 Angular 形列表

let triangles = [ (a,b,c) | c <- [1..10], b <- [1..10], a <- [1..10] ]  

显然,这会生成 (x,y,z) 所有可能组合的元组列表(或者是三元组?),其中 x、y 和 z 介于 1-10 之间。

我认为尝试用 Javascript 重现它会很有趣,但我没有运气。有没有一种优雅的(但可读的)方法可以使用 reduce/map 等在 javascript 中生成它?

我正在寻找一个数组数组,其中每个子数组包含 3 个数字。我会发布我的代码,但我什至没有接近解决这个问题,所以我认为这不会有帮助。

最佳答案

您似乎正在寻找当今 JavaScript 中最接近列表推导式的等价物。理解目前在 EcmaScript 中处于待命状态,我们不知道它们是否会很快可用。但是我们有 generators .它们没有那么性感,但它们可能会满足您的需求。

它可能是这样的:

var triangles = (function*(){
for (var i=0; i<10; i++){
for (var j=0; j<10; j++){
for (var k=0; k<10; k++){
yield [i,j,k];
}
}
}
})();


console.log(triangles.next().value); // [0, 0, 0]
console.log(triangles.next().value); // [0, 0, 1]
console.log(triangles.next().value); // [0, 0, 2]

与 Haskell 一样,您不限于有限列表。

你可以这样迭代:

for (var t of triangles) console.log(t);

(当然,如果你的列表是无限的,你最好在某个时候中断)。

如果你需要一个具体的数组(这破坏了生成器的美感),那么你可以按照 Bergi 的建议使用 Array.from:

var triangleArray = Array.from(triangles);

关于javascript - 是否可以在 Javascript 中完成这个简单的 Haskell 赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36332843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com