这是我的问题:声明类型并定义一个函数,它将两个数字m和n作为输入,并返回一个包含m和n之间所有奇数整数的加倍值的列表。例如,乐趣2 11将返回[6,10,14,18,22]。
我不知道怎么能拿出2号和11号这两个并将它列入一个列表[2..11]。有谁知道怎么做?
答案 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放入将返回的列表中” 。
希望解释。