簡體   English   中英

在Haskell中生成無限列表

[英]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.

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