[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
survey - JAR's answers
Here are my own answers.
I 1. (EQ? (LAMBDA (X) X) (LAMBDA (Y) Y)) ;"Coalescing"
E 2. (EQV? (LAMBDA (X) X) (LAMBDA (Y) Y))
I 3. (LET ((X (LAMBDA (Z) Z))) (EQ? X X)) ;"Splitting"
E 4. (LET ((X (LAMBDA (Z) Z))) (EQV? X X))
I 5. (LET ((X ... exact number ...)) (EQ? X X))
X 6. (EQ? #\X #\X)
These are the only possible choices given the conjunction of the
following constraints, which I find desirable:
(a) I want to give implementations a lot of leeway in the optimizations they
do on closures.
(b) I want closures to not have associated locations (in the sense of
denotational semantics), i.e. I want to equate a closure with its behavior
when called.
(c) I want EQV? to behave in a machine-independent manner, without requiring
that it solve the halting problem.
Jonathan.