gpt4 book ai didi

javascript - `[e | x <- xs; y <- ys; ...] = concat[[e | y <- ys; ...] | x <- xs]`如何

转载 作者:行者123 更新时间:2023-11-29 21:00:33 30 4
gpt4 key购买 nike

我正在阅读《函数式编程导论第一版》。我想出了一个规则来翻译理解,

[e | x <- xs; y <- ys; ...] = concat[[e | y <- ys; ...] | x <- xs]

我不明白这里的concat。 concat需要多个列表,但在这里我只看到一个。

我读了[[e | y <- ys; ...] | x <- xs]作为

for(x in xs){
for(y in ys){
someList.push(e)
}
}

也许我读错了或者|这里有一些特殊的含义。

请帮忙。

最佳答案

[[e | y <- ys; ...] | x <- xs]翻译成你的伪语言将是:

for (x in xs) {
tmp = []
for (y in ys) {
tmp.push(e)
}

someList.push(tmp)
}

你可以阅读 [[e | y <- ys; ...] | x <- xs]表达式为:“对于 x 中的每个 xs,生成一个列表,其中包含 e 对于 y 中的每个 ys”。

concat具有以下签名:concat :: [[a]] -> [a]

因此它展开折叠结构。

因此 concat [[1,2,3],[4,5]] => [1,2,3,4,5]

关于javascript - `[e | x <- xs; y <- ys; ...] = concat[[e | y <- ys; ...] | x <- xs]`如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46702915/

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