let compare a b =
let c = Typ.compare a.arr_element b.arr_element in
if c <> 0 then c
else match a.arr_flat , b.arr_flat with
| Some a , Some b -> Int64.compare a.arr_size b.arr_size
| None , Some _ -> (-1)
| Some _ , None -> 1
| None , None -> 0