Having macros expanded when the defun is first seen offers the nice feature
that you can't easily break functions you've already written as you enter a
debugging phase.
You also can't FIX functions you've already written by changing the
macros they call. You now have to go back and find every last function
that calls FOO, and re-expand it to do the right thing, assuming that
you've got the source handy. Things that I'm sure are right and that I
don't want to break are usually already compiled.
-- Scott