let rec check_types types provided_types = match types with
(name,ty)::rest ->
if List.mem_assoc name provided_types then
let other_type = List.assoc name provided_types in
let _ =
try
check_unified ty other_type
with
Linker_error s -> raise_linker_error (concat ["Conflicting type definitions for ";name;": ";s])
in
check_types rest provided_types
else
check_types rest provided_types
| [] -> ()