let copy ({ ar = ar } as ra) =
    let new_ar = Impl.make (real_length ra) (Impl.unsafe_get ar 0) in
    for i = 1 to real_lix ra do
      Impl.unsafe_set new_ar i (Impl.unsafe_get ar i)
    done;
    { ra with ar = new_ar }