diff options
author | Ziv Scully <ziv@mit.edu> | 2014-10-14 18:05:09 -0400 |
---|---|---|
committer | Ziv Scully <ziv@mit.edu> | 2014-10-14 18:05:09 -0400 |
commit | 75d1eedd15edc41b1c2bc9d1fce7a74f37bd78a1 (patch) | |
tree | 09a958bb9333b12cc118b14053cb9043e8a6463b /src/multimap_fn.sml | |
parent | 8cf3a275f25ffcbb97d623c4e988fdcc81ef5978 (diff) |
Complete overhaul: cache queries based on immediate query result, not eventual HTML output.
Diffstat (limited to 'src/multimap_fn.sml')
-rw-r--r-- | src/multimap_fn.sml | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/multimap_fn.sml b/src/multimap_fn.sml index 585b741f..3dab68a5 100644 --- a/src/multimap_fn.sml +++ b/src/multimap_fn.sml @@ -1,14 +1,16 @@ 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 itemSet = ValSet.set type multimap = ValSet.set KeyMap.map - fun inserts (kToVs : multimap, k : key, vs : items) : multimap = + val empty : multimap = KeyMap.empty + fun insertSet (kToVs : multimap, k : key, vs : itemSet) : 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) = + insertSet (kToVs, k, ValSet.singleton v) + fun findSet (kToVs : multimap, k : key) = case KeyMap.find (kToVs, k) of SOME vs => vs | NONE => ValSet.empty + val findList : multimap * key -> item list = ValSet.listItems o findSet end |