[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
sequential evaluation of arguments
Note: Although the precise order of evaluation is unspecified, the
expressions must be evaluated without interleaving. Interleaving is
not allowed because Scheme provides no facilities for serializing
concurrent side effects.
Isn't this a bit strong? Specifically, saying that exprs MUST BE EVALUATED
WITHOUT INTERLEAVING precludes parallel implementations which do compile-time
side-effect analysis to determine that two expressions' side effects are
non-interferring and thus can safely be run concurrently. (Note that within
this context, we would consider two calls to CONS to "interfere" in the sense
that they have ALLOCATE effects, the results of which may not be shared, just
as we would consider two calls to I/O routines on the same I/O port to
interfere).
Being a firm believer in Quantum Mechanics, I believe that if you
can't tell the difference, you can do anything you want. I think you
are interpreting the wording too restrictively. I interpret all such
"commands" as saying "your implementation must produce the same values
as if...", not "your implementation must act in exactly the following
way...".