let reduce_environment env =
let gbind =
List.map
(fun (id,x) -> id, {x with gbind_type = reduce_variable_type x.gbind_type })
env.global_binding
in
let str_table =
List.map
(fun (id,desc) -> id, ref (reduce_struct_desc !desc))
env.struct_table
in
assert (env.local_binding = []);
{ global_binding = gbind;
struct_table = str_table;
struct_name_table = env.struct_name_table;
local_binding = [] }