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

Remarks on mini-ballot



    Date:  9 November 1982 0245-EST (Tuesday)
    From: Guy.Steele at CMU-10A

    However, the analogy above also indicates to me that function specs
    like (:PROPERTY FOO BAR) really are a kind of generalized name for
    a function.  If so, orthogonality demands that they be permissible
    in a lot of places where currently I believe they are not in Lisp Machine
    LISP:
    (a) In FUNCTION:  #'(:PROPERTY FOO BAR) ought to be legal.
It is.  I don't remember there ever being a time when it wasn't, although
I might be forgetting.
    (b) As an argument to APPLY:  (APPLY '(:PROPERTY FOO BAR) args).
    (c) In ordinary function calls!  ((:PROPERTY FOO BAR) 5 7 :START 3 :END 5)
These two aren't, on the theory that the name for a thing is not the thing.
I won't try to argue that this theory is right, but that's the way it is
right at the moment.  The lack of (c) actually required introducing a new
special form, MACROCALL, which is kind of like FUNCALL except that it works
for macros.  Of course if you think about it more precisely, and with proper
understanding of Lisp semantics, this means that MACROCALL is nothing whatever
like FUNCALL!  It's a macro that gets the macro definition of its first subform
and uses it to macro-expand the form.