【发布时间】:2011-05-13 03:11:50
【问题描述】:
Standard Prelude 函数中是否有实现并集和集合交集的功能?
union :: (Eq a) => [a] -> [a] -> [a]
intersect :: (Eq a) => [a] -> [a] -> [a]
如果不是,有人可以说我的实现是否有效,(充分利用惰性和前奏功能)
unionSet :: (Eq a) => [a] -> [a] -> [a]
unionSet as bs = foldl (\xs y -> if elem y xs then xs else xs ++ [y]) as bs
intersectSet :: (Eq a) => [a] -> [a] -> [a]
intersectSet as bs = let ns = [ a | a <- as, elem a bs] in [ b | b <- bs, elem b ns]
【问题讨论】:
标签: data-structures haskell set