I've been thinking lately about how Lisp-like languages could implement macros, and it's confused me on one point: How can recursive macros work? What I was thinking of is that the macro code can be expanded, then converted to a function, and then used later on. But you can't expand the code if you're using a recursive macro... Same for mutually recursive macros. I know they're possible, because I've tried them and they work! Can someone enlighten me as to how this works? Is this a special case which has to be treated as such, or what? |