[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