簡體   English   中英

我如何懶惰地評估Haskell中的列表差異?

[英]How can I lazily evaluate a list difference in Haskell?

有沒有一種方法可以評估無限列表之間的列表差異? 例如, ([1..] \\\\ [2*n | n <- [1..]])計算結果應為[1,3,5,7, ... ] 不幸的是,它似乎迫使對第一個或第二個列表或兩者進行評估。 有避免這種情況的方法嗎? 即使使用take 5 ([1..] \\\\ [2*n | n <- [1..]])也不會求值為[1,3,5,7,9] ,這顯然是正確的。 注意, \\\\運算符是從Data.List導入的。

如果列表已排序,則可以使用data-ordlist包。

Data.List.Ordered> take 5 ([1..] `minus` [2,4..])
[1,3,5,7,9]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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