Mercurial > urweb
comparison src/multimap_fn.sml @ 2203:39faa4a037f4
ML half of initial prototype. (Doesn't compile because there's no C yet.)
author | Ziv Scully <ziv@mit.edu> |
---|---|
date | Tue, 25 Mar 2014 02:04:06 -0400 |
parents | |
children | 365727ff68f4 |
comparison
equal
deleted
inserted
replaced
2202:606af2c9b828 | 2203:39faa4a037f4 |
---|---|
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 items = ValSet.set | |
5 type multimap = ValSet.set KeyMap.map | |
6 fun inserts (kToVs : multimap, k : key, vs : items) : multimap = | |
7 KeyMap.unionWith ValSet.union (kToVs, KeyMap.singleton (k, vs)) | |
8 fun insert (kToVs : multimap, k : key, v : item) : multimap = | |
9 inserts (kToVs, k, ValSet.singleton v) | |
10 fun find (kToVs : multimap, k : key) = | |
11 case KeyMap.find (kToVs, k) of | |
12 SOME vs => vs | |
13 | NONE => ValSet.empty | |
14 end |