Saltar al contenido

¿Qué significa exactamente homoiconicidad?

Solución:

Significa “código como datos”, que es una característica general de la familia Lisp.

(add 2 3)

Al igual que la cadena anterior, que es tanto una lista como una llamada a función. El prefijo “Homo” representa esta característica.

Scheme es homo-icónico porque sus programas tienen una interpretación como estructuras de datos.

'(define (foo x) (* x x))

es una lista, cuyo primer elemento es define, el segundo (foo x) (una lista) y así sucesivamente. La comilla ' significa: no interpretes esto, déjalo como una lista. Si quitamos el ' obtenemos

(define (foo x) (* x x))

que es una definición de función de Scheme. Debido a que las definiciones de programa de Scheme son expresiones de lista anidadas (y por lo tanto una especie de “literales de árbol de sintaxis”), y Scheme es un lenguaje dinámico, puede jugar trucos con esto para construir sistemas de generación de macro / código muy poderosos.

Ahora bien, Java no es homo-icónico simplemente porque no proporciona este tipo de “literales de programa” que evalúan para analizar fragmentos de árboles. Por supuesto, puede definir una cadena

String helloWorld =
   "class Hello { public static void main(System.out.println("Hello, world!"); }";

que podría analizar y alimentar a un compilador, pero eso es incómodo, porque es una cadena en lugar de un término estructurado.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *