let tau_of_object_array obj n = let rec apply_dim t n = (*[LC] not perfect, but works *) if n > 0 then ADT("farray",[apply_dim t (pred n)]) else t in apply_dim (tau_of_object obj) n