[R6RS] cost of letrec* semantics for internal definitions

R. Kent Dybvig dyb at cs.indiana.edu
Thu Feb 1 10:15:49 EST 2007

I agree that many implementions don't enforce some restrictions, and of
course r5rs doesn't require them to do so in most cases.  I don't agree
that users aren't complaining.  I've certainly heard complaints about
portability problems that result from one implemention or another being
lax or incorporating extensions into standard forms and procedures.  This
is why some of us wished to make error-reporting requirments more
stringent.  With trepidation, I have gone along with a looser or no
requirement in cases where we've had difficulty expressing the requirement
or where there is perceived difficulty enforcing the requirement.  I've
also been swayed by the claim that by expressing a stringent requirement
we are promoting some bogus programs to legitimate programs, but I
realized belatedly that this is easily addressed by allowing such programs
to be rejected before execution.

In the case at hand, I believe that the restriction can be enforced simply
or without much overhead.  This suits both low-performance systems and
many high-performance systems, but may not be suited to systems in a
certain middle ground.  For this reason, as I said, I'm willing to say
that the exception "should" rather than "must" be raised.


More information about the R6RS mailing list