|
|
1.1 root 1: (* stringtab.sml *)
2:
3: functor StringTable(type elem val default: elem) =
4: struct
5:
6: type awkTable = elem ref Stringmap.stringmap
7:
8: fun new() = Stringmap.new(): awkTable
9:
10: fun set (t: awkTable) (s:string, x:elem) : unit =
11: let val r = Stringmap.map t s in r := x end
12: handle Stringmap.Stringmap => Stringmap.add t (s,ref x)
13:
14: fun get (t: awkTable) (s:string) : elem =
15: !(Stringmap.map t s)
16: handle Stringmap.Stringmap => default
17:
18: fun app (t: awkTable) (f: string * elem -> unit) =
19: Stringmap.app (fn (s,ref e) => f(s,e)) t
20:
21: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.