Symmetry between programs and data. See *Lisp, Smalltalk, and the Power of Symmetry* post
> The only thing that seems to be required for a language to allow this is a pervasive symmetry between programs and data. If a language allows programs and data to be treated as the same thing, then that language becomes easily and infinitely extensible – a language of the gods. S-expressions, it turns out, are not the only way to do this – you can do it with objects as well. I wonder if there are still more ways we haven’t yet tried?
Richard Kenneth Eng