IMHO the sentence

"..., returning nil if arr is unchanged."

does not fully describe the behavior

$ ruby -v -e 'puts [1,2,1].reverse!.inspect'
ruby 1.6.1 (2000-10-05) [i386-cygwin]
[1, 2, 1]

Regards,

Robert