elm/core/Set.elm

48 lines
968 B
Elm
Raw Normal View History

2012-10-10 21:37:42 +00:00
module Set (empty,singleton,insert,remove
,member
,foldl,foldr,map
,union,intersect,diff
,toList,fromList
) where
2012-10-10 21:37:42 +00:00
type Set t = Dict t ()
empty : Set t
empty = Dict.empty
singleton : t -> Set t
singleton k = Dict.singleton k ()
insert : t -> Set t -> Set t
insert k = Dict.insert k ()
remove : t -> Set t -> Set t
remove = Dict.remove
member : t -> Set t -> Bool
member = Dict.member
union : Set t -> Set t -> Set t
union = Dict.union
intersect : Set t -> Set t -> Set t
intersect = Dict.intersect
diff : Set t -> Set t -> Set t
diff = Dict.diff
toList : Set t -> [t]
toList = Dict.keys
fromList : [t] -> Set t
fromList = List.foldl (\k t -> Dict.insert k () t) empty
foldl : (a -> b -> b) -> b -> Set a -> b
foldl f = Dict.foldl (\k _ b -> f k b)
foldr : (a -> b -> b) -> b -> Set a -> b
foldr f = Dict.foldr (\k _ b -> f k b)
map : (a -> b) -> Set a -> Set b
map f = fromList . List.map f . toList