aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/multimap_fn.sml
diff options
context:
space:
mode:
authorGravatar Ziv Scully <ziv@mit.edu>2014-10-14 18:05:09 -0400
committerGravatar Ziv Scully <ziv@mit.edu>2014-10-14 18:05:09 -0400
commit75d1eedd15edc41b1c2bc9d1fce7a74f37bd78a1 (patch)
tree09a958bb9333b12cc118b14053cb9043e8a6463b /src/multimap_fn.sml
parent8cf3a275f25ffcbb97d623c4e988fdcc81ef5978 (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.sml10
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