1
我是新來的哈斯克爾,並希望使兩個哈斯克爾列表之間的設置差異。例如,我有名單a
和b
並且想要a-b
,即[4,5,6,7]
。我如何找到不包含在另一個哈斯克爾列表中的列表的元素
let a = [1,2,3,4,5,6,7]
let b = [1,2,3]
是否有任何內置函數用於執行此操作。
我是新來的哈斯克爾,並希望使兩個哈斯克爾列表之間的設置差異。例如,我有名單a
和b
並且想要a-b
,即[4,5,6,7]
。我如何找到不包含在另一個哈斯克爾列表中的列表的元素
let a = [1,2,3,4,5,6,7]
let b = [1,2,3]
是否有任何內置函數用於執行此操作。
可以使用(\\)
運營商Data.List
,予以警告,它不僅能消除各自的第一個實例,因此
> [1..7] \\ [1..3]
[4,5,6,7]
> [1,1,1] \\ [1,2]
[1,1]
如果你想有一個真正的「差集」,使用Data.Set
:
> import qualified Data.Set as Set
> Set.fromList [1..7] Set.\\ Set.fromList [1..3]
> Set.fromList [1,1,1]
fromList [1]
> Set.fromList [1,1,1] Set.\\ Set.fromList [1,2]
fromList []