[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

EQ?, again



    Date: Fri, 28 Feb 86 18:26:57 EST
    From: Jonathan A Rees <JAR@MC.LCS.MIT.EDU>

	Date: Fri, 28 Feb 86 16:40 EST
	From: Guy Steele <gls at THINK-AQUINAS.ARPA>

	    Date: Wed, 19 Feb 86 21:37:49 EST
	    From: Jonathan A Rees <JAR@MC.LCS.MIT.EDU>

	I   1. (EQ?  (LAMBDA (X) X) (LAMBDA (Y) Y))		;"Coalescing"
	I   2. (EQV? (LAMBDA (X) X) (LAMBDA (Y) Y))
	I   3. (LET ((X (LAMBDA (Z) Z))) (EQ?  X X))	;"Splitting"
	T   4. (LET ((X (LAMBDA (Z) Z))) (EQV? X X))
	I   5. (LET ((X ... any expression evaluating to an exact number ...))
	     (EQ? X X))
	I   6. (EQ? #\X #\X)

    It took me a while to figure out how to reconcile your answer to 3 with
    your answer to 4.  I take it you want procedures to know their identity,
    but that you imagine an implementation would still want the liberty to
    make (identity-preserving) copies, so EQ? might fail to recognize two
    procedures being the same, even though EQV? could succeed?

Sure.  Imagine a multiprocessing extension of SCHEME.  (Call it, just
for laughs, MULTILISP.)  It might be crucial to efficiency to allow
making copies of code for distribution to various processors.  I wonder
what Halstead has to say about this.