![](/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.