Homoiconicidad

La fuente original es la publicación Macro Instruction Extensions of Compiler Languages,[1]​ según la temprana y muy influyente publicación TRAC, A Text-Handling Language:[2]​ [...] Alan Kay usó y posiblemente popularizó el término "homoicónico" a través de su tesis doctoral de 1969:[3]​

Una ventaja de la homoiconicidad es que extender el lenguaje con nuevos conceptos habitualmente se hace más sencillo.

Ya que los datos representando el código puede ser pasado entre las capas base y meta del programa.

El árbol de sintaxis abstracta de una función puede ser compuesta y manipulada como una estructura de datos en la capa meta, y entonces, evaluada Una demostración típica de la homoiconicidad es el evaluador metacircular.

Los lenguajes considerados homoicónicos son: En los sistemas con arquitectura Von Neumann (incluyendo la vasta mayoría de los sistemas actuales), el código máquina también tiene esta propiedad, siendo el tipo de datos bytes en memoria.

Un árbol de sintaxis simplificado para una operación o prefijo algebraico de tipo polaco, junto con su sintaxis Clojure equivalente.