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