structure Dict : DictSig = struct exception Lookup type Key = string type Item = int type Dict = string -> item val empty = fn _ => raise Lookup fun lookup d k = d k fun remove (k, d) = fn k' => if k' = k then raise Lookup else d k' fun enter ((k, e), d) = fn k' => if k' = k then e else d k' end;