let filteri_array f x =   let atype = snd (f 0 x.(0)) in   let r = Array.make (Array.length x) atype and c = ref 0 in   for i = 0 to Array.length x - 1 do     let y, z = f i x.(i) in     if y = true then (r.(!c) <- z; c := !c + 1)   done;   Array.sub r 0 !c