On Sun, Jul 20, 2003 at 01:13:00AM +0900, Austin Ziegler wrote: > Expression-oriented languages return values from the expressions. > Statement-oriented languages don't. Perl and Ruby are expression- > oriented; C and Pascal are not. I think that's a misleading characterization, especially if it lumps C and Pascal together. They're similar languages, but they have some important differences, and while I would agree that Pascal is not expression-oriented, I would say that C is. The fact that a function call requires an explicit return is somewhat irrelevant to the larger point that single statements in C, including assignments, have values, whereas in Pascal no statements have values. C is not as thoroughly expression-oriented as Perl and Ruby, to be sure. Compound statements don't have a return value (which is why the ?:: operator exists; you can't do {x = if (a) b; else (c);}), and you can declare void functions which are likewise valueless (although this was a later addition to the language). Chained comparisons don't work in Perl5, either, though they may work in Perl6. But then Perl is not known to eschew features just because they may be more complicated to compile; on the language scale of "regular", "context-free", "context-sensitive", Perl may be described as "context-downright-touchy". -Mark