From: Robert Klemme Date: 2006-09-24T19:45:12+09:00 Subject: Re: Riddle me this (a question about expressions) Others have commented this already. Just another bit: once you think about semantics of "return" for a moment it should be immediately clear that it is not and cannot be an expression simply because it never returns control flow but instead transfers it to someplace else. The same holds true for "next". Interestingly enough "raise" does not provoke such a compile error although I cannot see how it would ever return control flow locally: >> RUBY_VERSION => "1.8.3" >> def foo() x = raise "Test" end => nil >> RUBY_VERSION => "1.8.5" >> def foo() x = raise "Test" end => nil Kind regards robert