首页 > 解决方案 > 通过过滤每两个数字的序列,使用推导在 Haskell 中生成一个列表

问题描述

我想使用推导在haskell中执行以下列表:

[1,2,5,6,9,10,13,14,17,18]

我试过这个:

[x | x <- [1..18], y <- [1..4], y < 3]

但我明白了:

[1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18]

我不知道是否可以使用一些 Enum 函数来获取列表,但我想知道是否有某种方法可以通过列表推导来做到这一点。我可以看到我为每个 y 值得到一个 x,但我只想要过滤器的 y 值,而不是第一代列表。

标签: haskellfunctional-programming

解决方案


你可能想要这个:

Prelude> [x+y | x <- [1, 5..18], y <- [0..1]]
[1,2,5,6,9,10,13,14,17,18]

推荐阅读