[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
I would contend that any Lisp object may be the value in a setf of
(symbol-function <symbol>), and that a subsequent invocation of
(symbol-function <symbol>) should retrieve exactly that object (or one
EQL to it). However, this does not prevent implementations from
wrapping that object in a closure internally on storing and unwrapping
it again on fetching.
This seems right to me. What is not stated in CTtL is whether
an implementation has the right to check what is being put in
there and cause an error at storage time.
As far as allowing a lambda as the function cell, CLtL states that an
implementation is at liberty to always compile its code. If the lambda must
be left in its original state, then the implementation has to compile every
time a function is called, rather than when one is defined!
The hidden wrapping mentioned earlier (or an implicit wrapping through
a hash link from the expression) both allow first time compilation rather
than every time.