![](/img/trans.png)
[英]How do you convert a list of numbers into a list of ranges in haskell?
[英]How do you make a list in Haskell using two numbers?
这是我的问题:声明类型并定义一个函数,它接受两个数字m和n作为输入,并返回一个包含m和n之间所有奇数整数的加倍值的列表。 例如,乐趣2 11将返回[6,10,14,18,22]。
我不知道我怎么能拿出2号和11号这两个并将它列入一个列表[2..11]。 有谁知道如何做到这一点?
使用序列生成(范围语法):
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]
几乎两年没用Haskell了,所以如果我错了就纠正我,它不起作用:
getDoubledOdd :: Int -> Int -> [Int]
getDoubledOdd m n = map (2*) $ filter odd [m..n]
列表理解和范围的组合将是最标准的方法。
[ 2*x | x <- [2..11], odd x ]
代码基本上是说“让x循环从2到11(x < - [2..11]),如果x是奇数(奇数x),则将2 * x放入将返回的列表中”。
希望解释一下。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.