let unsafe_swap { ar = ar } n m =
    let tmp = Impl.unsafe_get ar n in
    Impl.unsafe_set ar n (Impl.unsafe_get ar m);
    Impl.unsafe_set ar m tmp