[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Subject: FUNCTION and MACROLET
To sum up, there are two possibilities:
[A] (MACROLET ((FOO ...)) (FUNCTION FOO)) causes an error, and
SYMBOL-FUNCTION with non-function symbol also causes an error.
[B] (MACROLET ((FOO ...)) (FUNCTION FOO)) returns some totally random object
which, when invoked as a function, will cause an error. SYMBOL-FUNCTION
with non-function symbol also returns something not a function.
CLtL supports [B]. Also Guy's proposed clarification seems to support [B].
However, [B] forces the compiler to INVENT something not a function, and to
silently generate code that returns the something, although this something is
totally useless. Rather, the compiler should cause an error when processing
the above MACROLET form. I prefer [A]. As Rob said, the difference of [A]
and [B] do not matter actually. In addition, it will be straightforward
to change an already existing implementation toward [A]. (Indeed, I think
I could do the change in five minutes for KYOTO!!)
The above discussions (and the discussions of Bob and Nick) are based on
Nick's assumption that FUNCTION with a symbol should correspond to
SYMBOL-FUNCTION in sense that a symbol as a variable corresponds
to SYMBOL-VALUE). Is this what most people agree with? Yes, the description
of FUNCTION in CLtL says
...; see SYMBOL-FUNCTION.
The reader of CLtL might see the description of SYMBOL-FUNCTION. Perhaps
he would like to say "yes, I saw it... so what?"