Look for problems with your macro definitions, such as a macro that is missing a quote. When compiled, this definition essentially becomes a constant. But when interpreted, the body of the macro is executed each time the macro is called. For example, in Allegro CL the following code will behave differently when interpreted and compiled: (defvar x 10) (defmacro foo () (incf x)) (defun bar () (+ (foo) (foo))) Putting a quote before the (incf x) in the definition of foo fixes the problem. If you use (SETF (SYMBOL-FUNCTION 'foo) ...) to change the definition of a built-in Lisp function named FOO, be aware that this may not work correctly (i.e., as desired) in compiled code in all Lisps. In some Lisps, the compiler treats certain symbols in the LISP package specially, ignoring the function definition. If you want to redefine a standard function try proclaiming/declaring it NOTINLINE prior to compiling any use that should go through the function cell. (Note that this is not guarranteed to work, since X3J13 has stated that it is not permitted to redefine any of the standard functions). ---------------------------------------------------------------- ;;; *EOF*Go Back Up