LispE es un intérprete de Lisp implementado en C++ que resuelve la vieja tensión entre interprete y compilador mediante una idea central: cada instrucción del lenguaje se modela como una subclase de una clase raíz llamada Element, y la evaluación se reduce a un único método virtual eval(), uniforme en toda la jerarquía. El texto formula la equivalencia que articula todo el diseño: un dato f() es F.eval() —una instrucción sin subnodos cuya evaluación se devuelve a sí misma—, y una llamada f(a₁..aₙ) es F(a₁..aₙ).eval(), donde F es una instancia inmutable que guarda sus argumentos como subnodos. Esa inmutabilidad no es un detalle de implementación: es la condición para que eval sea una función pura y para que la forma pueda persistir en el árbol de sintaxis abstracta y ejecutarse mil veces enviando siempre eval a la misma instancia.
El artículo contrasta este enfoque con los FEXPR de los Lisp históricos (Lisp 1.5, MacLisp), operadores que recibían sus argumentos sin evaluar y decidían en tiempo de ejecución qué evaluar. Esa expresividad impedía al compilador razonar sobre el código, como argumentó Kent Pitman en 1980, y motivó su abandono. LispE responde a la misma restricción —mantener la homoiconicidad sin renunciar a la optimización— con la equivalencia f(a₁..aₙ) ⟺ F(a₁..aₙ).eval(): la aplicación funcional y el envío del mensaje eval son el mismo acto con dos notaciones. El AST permanece vivo, pero cada nodo es un objeto C++ optimizable. La uniformidad de la firma de eval es lo que hace posible el despacho mediante vtable: un único método virtual sobreescrito por clase, sin etiquetas que distingan celdas de código de celdas de datos, porque el dato es el caso degenerado de la instrucción, el punto fijo de eval.
