let partition p ({ ar = ar } as ra) =
let res1, res2 as res = sempty ra.strategy, sempty ra.strategy in
for i = 0 to ra.vlix do
let el = unsafe_get_ar ar i in
if p el then add_one res1 el
else add_one res2 el
done;
res