The problem, as has been pointed out, is that the expression in the brackets gets evaluated before the reverse method. In order to control evaluation of parts of an expression you need something like Lisp macros, which would be extremely difficult to add to ruby and, according to matz, too dangerous. For a more thorough discussion on this point, see http://groups.google.com/group/comp.lang.ruby/browse_thread/thread/7650c939ca5f9881/ead3540b101ce5b4?