簡體   English   中英

如何檢查兩組的顯式並集是否為空?

[英]How to check if the explicit union of two sets is empty?

下面是我的兩個列表的顯式聯合的代碼。 我將如何獲得列表的長度而不是列表本身?

explicit_union :: (Eq a) => [a] -> [a] -> [a]
explicit_union as bs = foldl (\as b -> if elem b as then as else as ++ [b]) as bs

當且僅當兩個集合都為空時,聯合為空。 因此,如果您只是為此計算聯合,那是在浪費計算時間。

相反,如果為您提供了工會或仍然必須使用工會,則長度是最自然的方法。

但是,由於您只想知道它是否為空,因此可以使用take 1 ls == []代替length ls == 0 這樣,Haskell(這是一種惰性語言)只需要計算第一個元素,而不需要計算整個列表(因為length需要)

編輯

正如@joseph指出的那樣,有一個Prelude函數來檢查列表是否為空: null :: [a] -> Bool

暫無
暫無

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

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