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

Re: S&I's idea of EQ?

>From: willc%tekchips@tektronix.CSNET
>As I saw it, the result of the earlier EQ? discussion was a consensus that
>    (1)  it is not an error for EQ? to be called with procedural arguments.
>    (2)  EQ? as used in S&ICP ought to work.
>    (3)  "splitting" was a no-no.
>         (E.g. (let ((x (lambda () 0))) (eq? x x)) --> #!false is a no-no.)
>    (4)  "coalescing" was ok.
>         (E.g. (eq? (lambda () 0) (lambda () 0)) --> #!true is ok.)
>These points are in decreasing order of consensus, and in particular
>the consensus for (4) was not as strong as for (1) through (3).  Thus
>(4) is still a major topic for discussion.

I've been too preoccupied with other things to give this debate the
attention it deserves, but I feel somewhat uncomfortable with this
declaration of a consensus, even though I am largely in agreement with
Will's sentiments.

My concern is that splitting can occur in suprising places in an
optimizing compiler, and that more than just LAMBDA expressions are
involved.  Is there a consensus on coalescing and splitting for
bignums and reals?  Prohibiting splitting seems to be equivalent to
prohibiting constant propagation (beta substitution).

David Bartley