Tom Anderson said:
I would guess it just never occurred to them. The model of
statements and expressions, with the former containing the
latter but not vice versa, is a very ancient one, that has
generally served us pretty well.
In Java, an expression /can/ contain a statement.
In C, »( printf( "a" ), printf( "b" ))« is an expression for
a sequence of evaluations at run time. Something statements
are used for in many other languages.
In LISP languages, there really is no such distinction,
there only are nested lists in the source code (S-expressions).
But some lists are more like statements, other more like expressions.
In Assembler, there only are simple operations, which are more
like statements.
In pure functional languages, there are no statements nor
sequences of evaluations.
In natural language (English), there are noun phrases and
verb phrases, which approximately correspond to expressions
and statements, respectively.