code as data, however, does become an important concept in becoming really good at Perl or Python (and I would assume Ruby etc), and understanding common pitfalls here also helps one spot, for example, LSP problems and provide better solutions (because most LSP problems can be solved by replacing a mutator with something that returns a new object).
In Javascript, also, effectively you have to work with code as data.
So this isn't just about writing macros. There are a lot of areas where this does touch things.