(* cycle1 moves positions i,...,n-1 of array A one position down *) fun cycle1(A,n,i) = if i >= n then () else ( Array.update(A,i-1,Array.sub(A,i)); cycle1(A,n,i+1) ); fun cycle(A,n) = let val temp = Array.sub(A,0) in ( cycle1(A,n,1); Array.update(A,n-1,temp) ) end;