blob: 585b741fcfb633266e04df3f9742ce669bf57135 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
functor MultimapFn (structure KeyMap : ORD_MAP structure ValSet : ORD_SET) = struct
type key = KeyMap.Key.ord_key
type item = ValSet.item
type items = ValSet.set
type multimap = ValSet.set KeyMap.map
fun inserts (kToVs : multimap, k : key, vs : items) : multimap =
KeyMap.unionWith ValSet.union (kToVs, KeyMap.singleton (k, vs))
fun insert (kToVs : multimap, k : key, v : item) : multimap =
inserts (kToVs, k, ValSet.singleton v)
fun find (kToVs : multimap, k : key) =
case KeyMap.find (kToVs, k) of
SOME vs => vs
| NONE => ValSet.empty
end
|