macro expansion: to quote the body forms or not?
I'm having a hard time understanding exactly how macro expansion works. What is the difference in how the elisp interpreter handles these two snippets of code? (defmacro foo (arg) (message "arg is: %s" arg)) (foo "bar") and: (defmacro foo (arg) `(message "arg is: %s" ,arg)) (foo "bar") You example may be confusing because message both displays a message and returns it. strings (like "bar") are self-evaluating. Instructive Example (defconst zzz 123) (defmacro zzz1 (arg) `(insert (format "arg is: %s" ,arg))) (defmacro zzz2 (arg) (insert (format "arg is: %s" arg))) Evaluate the code above using C