[net.lang.c] Another stupid language proposal

rbbb@rice.ARPA (David Chase) (08/18/86)

As long as people are talking about using expressions as conditionals
(the ? void : void discussion), how about using commands as expressions?
I'm not talking about little, wimpy commands like "a = b"; I'm talking
about real commands, like "{ ... }" where that little ellipsis might be
pages of code.  I'm talking about VALOF/RESULTIS (get out your history
books, C hackers.  That's BCPL there).

As a quick review, this construction is used in this manner:

  a = VALOF command

where "command" is any command that can contain a RESULTIS command.  Thus
you can have SWITCH statements, FOR loops, WHILE loops, or just compound
statements that return values, with no restriction on the number of
RESULTIS's or their placement, as long as they are in the block.  The
command executes until a "RESULTIS expression" is encountered, at which
point the value of "expression" is returned as the value of the VALOF.
Actually, in C that would be VALOF/RETURN, except that RETURN isn't
guaranteed to return a value, and I'm sure many people would feel terribly
constrained by not being able to blow clean out of a subroutine with one
statement.

It's unlikely that many C programmers have used such an animal, so many
people reading this list probably won't appreciate it.  I have used it,
and it is very handy.  Other than the fuss and bother of adding another
piece of gunk to the language, is there any reason NOT to add this?

I also realize that this is a bit of a hefty feature to go proposing for
ANSI C, so I am just asking people to think about it.  Maybe in the
future, you know.  Fortran made it from 66 to 77 and they're planning an
88 (I've seen a draft of the standard, though it doesn't specifically
mention 1988 yet, you KNOW it will happen then).

David

karl@haddock (08/31/86)

rbbb@rice.ARPA writes:
>[ proposal for valof/resultis a la BCPL ]
>I also realize that this is a bit of a hefty feature to go proposing for
>ANSI C, so I am just asking people to think about it.

I don't think it'll ever be added to C.  The inline function, which has about
as much power, is a less drastic change and is syntactically neater.

Karl W. Z. Heuer (ima!haddock!karl, karl@haddock.isc.com), The Walking Lint