roc/compiler/builtins/roc/Set.roc

38 lines
848 B
Text

interface Set
exposes
[
empty,
single,
walk,
insert,
len,
remove,
contains,
toList,
fromList,
union,
intersection,
difference,
]
imports [ List, Bool.{ Bool }, Dict.{ values } ]
empty : Set k
single : k -> Set k
insert : Set k, k -> Set k
len : Set k -> Nat
remove : Set k, k -> Set k
contains : Set k, k -> Bool
# toList = \set -> Dict.keys (toDict set)
toList : Set k -> List k
fromList : List k -> Set k
union : Set k, Set k -> Set k
intersection : Set k, Set k -> Set k
difference : Set k, Set k -> Set k
toDict : Set k -> Dict k {}
walk : Set k, state, (state, k -> state) -> state
walk = \set, state, step ->
Dict.walk (Set.toDict set) state (\s, k, _ -> step s k)