exception TypeError module VarMap = Mapext.Make(String) let rec fix equal f s = let fs = f s in if equal fs s then fs else fix equal f fs let (@@) f x = f x let print_list x l = Format.printf "%s: " x; let rec aux = function | [] -> () | [a] -> Format.printf "%s" a | p::q -> Format.printf "%s, " p; aux q in Format.printf "["; aux l; Format.printf "]@." let uid = let c = ref 0 in fun () -> c := !c + 1; string_of_int !c