Mercurial > urweb
comparison src/multimap_fn.sml @ 2304:6fb9232ade99
Merge Sqlcache
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Sun, 20 Dec 2015 14:18:52 -0500 |
parents | 365727ff68f4 |
children |
comparison
equal
deleted
inserted
replaced
2201:1091227f535a | 2304:6fb9232ade99 |
---|---|
1 functor MultimapFn (structure KeyMap : ORD_MAP structure ValSet : ORD_SET) = struct | |
2 type key = KeyMap.Key.ord_key | |
3 type item = ValSet.item | |
4 type itemSet = ValSet.set | |
5 type multimap = ValSet.set KeyMap.map | |
6 val empty : multimap = KeyMap.empty | |
7 fun insertSet (kToVs : multimap, k : key, vs : itemSet) : multimap = | |
8 KeyMap.unionWith ValSet.union (kToVs, KeyMap.singleton (k, vs)) | |
9 fun insert (kToVs : multimap, k : key, v : item) : multimap = | |
10 insertSet (kToVs, k, ValSet.singleton v) | |
11 fun findSet (kToVs : multimap, k : key) = | |
12 case KeyMap.find (kToVs, k) of | |
13 SOME vs => vs | |
14 | NONE => ValSet.empty | |
15 val findList : multimap * key -> item list = ValSet.listItems o findSet | |
16 end |