Earlier quoted context omitted.
no you're misunderstanding me. I'm saying that the macro's purpose is to read the source file and produce something at compile time. It's not a "normal" (read: runtime) function, as this feature cannot be implemented using a function that only executes at runtime.
Sure, but the macro function is a normal function - it has inputs, outputs, and (preferably) should be pure. There's nothing special about the macro function itself, really. You can see it explicitly in Common Lisp, where you can easily access and replace a macro-function with a custom one that you DEFUN yourself, like this. CL-USER> (defun my-quote-fn (form env) (declare (ignore env)) (destructuring-bind (operator &…
that's why it's called a macro and not a function. You're using the word function in the mathematical sense, and not in the lisp sense.