如何在Haskell的列表理解列表中仅获取偶数

the*_*tor 1 haskell

我正在尝试采用一个起点和一个长度并返回一个列表列表,该列表逐渐将偶数起始整数增加2

例如:

evenIncrease 6 3
Run Code Online (Sandbox Code Playgroud)

应该返回: [[6],[6,8],[6,8,10]]

我是Haskell的新手,到目前为止,我的尝试看起来像这样:

evenIncrease n l = [[n..i] | i <- [n..n+(l*2)-2], even i]
Run Code Online (Sandbox Code Playgroud)

但是当我尝试的示例时evenIncrease 6 3,我得到:

[[6],[6,7,8],[6,7,8,9,10]]

这几乎是我要寻找的,但是我不明白为什么在使用警卫“偶数我”时内部列表中仍然存在奇数

有任何想法吗?

luq*_*qui 6

您正确地仅生成了偶数个端点,但是[n..i]仍然会增加1,因此即使两个端点都是偶数,您仍然会得到eg [6..8] = [6,7,8]。尝试[n,n+2..i]