[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: another nit
Leibniz's definition of the identity of X and Y goes something like this:
X = Y iff for all properties P, P(X) = P(Y)
If X and Y are identical except for the fact that EQV? or EQ? can
distinguish them, then they're not identical. Hence I don't see why
implementations that disallowed SET-CAR! on quoted lists would be
required to say that (EQV? '(A) '(A)) is #!true.
With the current semantics of EQ? and EQV?, I don't believe there's
any hope for an implementation-independent description. I'm sorry.
Yes, it should be an error to clobber quoted structure. In the formal
semantics I use, however, it's simpler to allow side effects. (I don't
want to have to deal with a separate class of immutable structures.)
No, (EQV? '(A) '(A)) should not be required to return true in implementations
that forbid clobbering quoted structure. If it were, (EQV? X Y) would have
to return true if X were a list that was quoted in file "foo" and Y were a
list that was quoted in file "bar". I don't want to write a fasl loader that
interns structures.
The manual should distinguish "is an error" from "unspecified", but you
shouldn't agonize over any unclear cases. I'm sorry about my mistakes.
Peace, Will