I think there’s a much simpler example of how code is data:
(hello world)
That’s a list containing two symbols. So it’s data. However, if I evaluate that list, it will call the function “hello” with the argument “world”. So it’s also code.Incidentally, lists and function calls are identical in lisp, hence code is data.
I think the article just complicates it by introducing macros.