And to drive your point home, Haskell code "expands" into System F. Macros in lisp do the same kind of transformation (AST rewrites), they just get to skip parsing.
I don't think the author understands that these things happen at different times. Especially because they said "at runtime" when macros expand much before that.
On the contrary, something like Rails is what I'd call extending the language arbitrarily at runtime. So the very lack of macros is what motivates shaky transformations at runtime.
Comments
And to drive your point home, Haskell code "expands" into System F. Macros in lisp do the same kind of transformation (AST rewrites), they just get to skip parsing.
I don't think the author understands that these things happen at different times. Especially because they said "at runtime" when macros expand much before that.
On the contrary, something like Rails is what I'd call extending the language arbitrarily at runtime. So the very lack of macros is what motivates shaky transformations at runtime.