gpt4 book ai didi

haskell - 是否可以在列表理解中添加多个元素?

转载 作者:行者123 更新时间:2023-12-02 17:04:56 24 4
gpt4 key购买 nike

我想知道是否可以在列表理解中将多个元素添加到列表中。

例如,如果我想要一个包含数字 1 到 10 的列表,我可以这样写:

[k | k <- [1..10]]

但是,是否还有一种方法可以通过始终在同一步骤中添加 k k+1 来做到这一点,然后只需采取只有奇数k?以下代码无效,但也许可以更好地解释我想要做的事情:

[k, k+1 | k <- [1, 3..10]]

目前,(据我所知)最接近的事情如下:

foldl1 (++) [[k, k + 1] | k <- [1, 3..10]]

最佳答案

有一些替代方案,但没有一个比您建议的要好得多。

concat [ [k, k+1] | k <- [1, 3 .. 10] ]
join [ [k, k+1] | k <- [1, 3 .. 10] ]
[ x | k <- [1, 3 .. 10], x <- [k,k+1] ]
[1, 3 .. 10] >>= (\x -> [x, x + 1])
do x <- [1, 3 .. 10] ; [x, x+1]

请注意,如您的解决方案中所示,如果发现空的列表列表,foldl1 (++) 将中止程序并出现运行时错误。上述替代方案不存在此问题。

关于haskell - 是否可以在列表理解中添加多个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36964978/

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