你如何使用两个数字在Haskell中列出一个列表?

时间:2013-10-25 19:19:58

标签: list haskell numbers

这是我的问题:声明类型并定义一个函数,它将两个数字m和n作为输入,并返回一个包含m和n之间所有奇数整数的加倍值的列表。例如,乐趣2 11将返回[6,10,14,18,22]。

我不知道怎么能拿出2号和11号这两个并将它列入一个列表[2..11]。有谁知道怎么做?

3 个答案:

答案 0 :(得分:6)

使用序列生成(范围语法):

Prelude> [2 .. 11]
[2,3,4,5,6,7,8,9,10,11]

也适用于符号值:

Prelude> let [m,n] = [2,11]
Prelude> [m .. n]
[2,3,4,5,6,7,8,9,10,11]

答案 1 :(得分:1)

近两年没有与Haskell合作,所以如果我错了,请纠正我并且它不起作用:

getDoubledOdd :: Int -> Int -> [Int]
getDoubledOdd m n = map (2*) $ filter odd [m..n]

答案 2 :(得分:0)

列表理解和范围的组合将是最标准的方法。

[ 2*x | x <- [2..11], odd x ]

代码基本上是说“让x从2循环到11(x < - [2..11]),如果x是奇数(奇数x),则将2 * x放入将返回的列表中” 。

希望解释。