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