From: not@... (Chris) Date: 2002-04-03T05:53:52+09:00 Subject: Re: Difference between 'do' and 'begin' On Wed, 27 Mar 2002 16:59:36 GMT, Tobias Reif wrote in comp.lang.ruby: >> a + b # expression >> x = a + b # statement > >aren't both of them expressions in Ruby? Yes. In OO languages every code fragment either returns a value or raises an exception. For that reason it would be better to think of code fragments in terms of whether or not they have an effect out of context, which is to say, whether or not they are composed of sub-expressions that result in a change of state of one or more of the participants. Ultimately this can't be known unless the internals of the objects are available for inspection, as operator overloading could cause something as simple as (a+b) to have a side-effect other than simply returning a value.