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


Kent, if DEFUN were implemented as 
(defmacro defun (name args &rest body)
          `(setf #',name #'(lambda ,args ,@body)))
then even random function calls
(FOO-BAR (DEFUN X () ...)
         (DEFUN Y () ...))
at top-level would have the "flattening out" effect 
that PROGN 'COMPILE does; in fact, there would be
no need to have PROGN 'COMPILE since all forms would be
treated uniformly. In that situation the only reasonable
form for "protecting" yourself from the compiler
(why would you want to is another question), is
(EVAL '(PROGN ...)).

So, I would recomend removing this PROGN 'COMPILE hack,
on the grounds that it doesn't reflect a coherent design
philosphy, and the semantics are somewhat dependant on
the implementation of DEFUN.


p.s. I think it almost goes without saying that the places
which depend on protecting themeselves from the compiler
are very few, and should be well marked.