簡體   English   中英

你如何使用兩個數字在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM