[英]Generating Infinite List in Haskell
因此,為了准備我即將參加的考試而進行了一些舊考試,並遇到了這個問題:
編寫Haskell代碼以定義ints :: [Int]
以下形式的無限列表: [0, 1, -1, 2, -2, 3, -3, 4, -4..]
在過去的一個半小時里,我一直在插電,但似乎找不到任何解決方法,否則將無法滿足我的要求。 我感覺到我真正想要的是表單的列表理解
ints :: [Int]
ints = [0] ++ [x (-x) | x <- [1..]]
但這不起作用,我不確定如何使它起作用
問題是x (-x)
不是Int
類型(由於@leftaroundabout在這里刪除了關於無效語法的廢話)。 您要為每個x
生成兩個值。 因此,我猜最簡單的方法是創建許多列表對[1, -1]
, [2, -2]
,...,然后將它們全部串聯在一起。 並且顯然在0
。
ints :: [Int]
ints = 0 : concat [[x, (-x)] | x <- [1..]]
另外,您可能要使用Integer
而不是Int
因為Int
有時會溢出,但Integer
不會。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.