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