An important thing about homiconicity: In homoiconic languages, you can build code in an in-memory structure, and there's some way to execute that structure, but that *doesn't mean the interpreter is literally executing the structure you built*. LISP has "defun", TCL has "proc". In each of these cases, you pass in a code structure (formally, at runtime) and get back an executable object. You execute these "compiled" executable objects, not the original data. This is a fiddly distinction, but…