let state_of_string =
let l = List.flatten
(List.map
(fun (s, l) -> List.map (fun str -> (str, s)) l)
state_strings
)
in
fun s ->
try List.assoc s l
with Not_found ->
failwith (Printf.sprintf "Bad state string: %s" s)