[plt-scheme] to define, or to let

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Mon Mar 22 09:32:18 EST 2004

At Mon, 22 Mar 2004 08:34:52 -0500, Paul Schlie wrote:
> If it's of any consolation, my view's are born predominantly out of over 20
> years of commercial experience [...]

I'm with Paul. I understand portability concerns, but not the idea that
unspecified evaluation order is good in practice. Indeed, it seems
strange to me that (in this thread) fixed order of evaluation has
become identified with theory, while unspecified order of evaluation
has become identified with practice. I'm more used to non-determinism
as a theoretician's game.

Or a compiler writer's game. C++ has unspecified order of evaluation,
and it's hardly the domain of theoreticians. But, as in Scheme, I think
this is a concession to compiler writers, and not a matter of making
the code more clear. I prefer to leave unspecified order of evaluation
(along with operator precedence) to C++ quizmasters in need of
surprising bits of code.

I can see why a programmer might want to specify that certain
computations are truly independent (i.e., they could be evaluated in
parallel). Of course, this isn't what an unspecified order of
evaluation means in Scheme, because each expression must be evaluated
completely before the next is started. In any case, I don't think that
a plain open parenthesis --- or even a `let' form --- is the right way
to express this intent.


Posted on the users mailing list.