Doesn't
(setf (symbol-function 'foo) (COPY '(LAMBDA ...)))
guarantee to produce a function definition not compiled by compiling the
file. If (setf (symbol-function 'foo) ...) compiles, then all bets are
off.
There is no requirement in CLtL that it be legal for a symbol function
cell to contain a lambda expression. In some implementations this
will cause an error when such a symbol is used in the function
position of an eval-ed expression. These implementations place a closure
in symbol function cells for interpreted functions, which all point
to the same compiled code sequence which takes a literal from the
closure (the literal is the lambda expression) and does the right
call into the middle of the interpreter.
-------