[R6RS] `quote' clarification

William D Clinger will at ccs.neu.edu
Thu May 10 07:54:37 EDT 2007

Mike wrote:
> Maybe you could help me---who clearly doesn't have enough routine---out
> in explaining this a bit more?  I see how specialization can descent
> down the literal, but it's not clear to me why eqv?-ness has to be lost
> along the way.

Much of the usefulness of a programming language
has to do with laws of the form

    E1 and E2 are equivalent
    if E1 is correct with respect to a certain criterion,
    then E2 is correct with respect to that criterion.

Scheme used to be fairly simple and elegant because
it had more such laws than most programming languages.
We have broken several of those laws, for no good
reason, but that is not by itself sufficient reason
to break more of those laws.

With respect to quoted constants, changing "should" to
"must" would break Scheme's beta rule, which is one of
Scheme's most important laws.  Scheme's beta rule is
already restricted (because Scheme is a by-value language
and has side effects), but changing "should" to "must"
wrt quoted constants would add an additional restriction
that is not currently present: that the redex contain no
quoted constants, or contains only quoted constants of a
form on which eqv? will be categorical, or that both
sides of the transformation contain exactly one instance
of all quoted constants of a certain form.

The difficulty of stating that restriction precisely
should give you some idea of why people who care about
simplicity and elegance become upset by cavalier proposals
to break the beta rule or similar laws.


More information about the R6RS mailing list