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

JOIN



    Date: Thu, 4 Oct 84 15:45:59 EDT
    From: Denys Duchier <Duchier at YALE.ARPA>

        Aside from any language design considerations, what was,
        and, I guess, still is the problem with JOIN? Chris told
        me that it would fail to behave properly in some cases,
        but could not remember the details of such an instance;

        What is so very wrong with:

    (Join obj1 obj2 ... objn)

        (macro) expanding into:

    ...

I assure you, if it was that easy, it would have been done long ago.
An explanation of why it's nontrivial would be tedious for both of us.
If you care, read the sources, and think about where closures don't get
consed.  Note that the implementation doesn't resemble the description
in the manual very much.  In fact JOIN is implemented in T 2.9, but for
it to work, the expansion of the OBJECT macro had to change, causing
object-file incompatibility between 2.8 and 2.9.  If 2.9 is ever
released, users will have to pay for the privilege (?) of using JOIN by
recompiling all their files.

[Religious aside: even given your suggested definition, there's no need
for JOIN to be a macro, because it doesn't have any unusual evaluation
order rules.  You shouldn't even think of doing something as a macro
when it can be done as a procedure.]