[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.