(* rev1 reverses A[i] through A[n-i-1] *) fun rev1(A,n,i) = if 2*i+1 >= n then () else let val temp = Array.sub(A,i); in ( Array.update(A,i,Array.sub(A,n-i-1)); Array.update(A,n-i-1,temp); rev1(A,n,i+1) ) end; fun reverse(A,n) = rev1(A,n,0);