let of_string s =
match String_table.find all s with
| None ->
let t = {
string = s;
(* CRv2 | OG: shouldn't we just use String.hash here? It's equivalent, but
clearer and makes it easier to modify our string-hashing algorithm later *)
hash = Hashtbl.hash_param 1 1 s;
} in
String_table.add all ~key:s ~data:t;
t
| Some t -> t