Lithp: un intérprete en Python del Lisp original de McCarthy

Fuentes: Lithp: a Python-based interpreter of McCarthy's original Lisp

Lithp es un intérprete educativo escrito en Python (2.6.1 o superior) que reimplementa el Lisp descrito por John McCarthy en su trabajo fundacional. Su autor, Fogus, publica el código en GitHub con un nivel de documentación inusual: cada bloque incluye comentarios extensos que explican el razonamiento detrás de la implementación, convirtiendo el repositorio en un recurso didáctico sobre los orígenes del lenguaje.

La clase principal, Lithper, actúa como motor del intérprete y sigue un ciclo REPL clásico: inicializa el entorno global, procesa los argumentos de la línea de comandos, registra las funciones base de Lisp, lee expresiones S del usuario, las evalúa e imprime el resultado. Entre las funciones primitivas definidas se encuentran eq, quote, car, cdr, cons, atom y cond, junto con la utilidad print y las formas especiales lambda y label. Los símbolos t y nil se asocian a TRUE y FALSE, y se crean meta-enlaces como lithp y global para que el código en ejecución pueda acceder a su propio entorno.

El proyecto también experimenta con la coexistencia de clausuras y ámbito dinámico, un tema que McCarthy y sus primeros colaboradores —Steve Russell, Timothy P. Hart y Mike Levin— abordaron en los años sesenta. El autor reconoce que, en la práctica, la combinación resulta problemática, aunque la implementación sigue admitiéndola. El lector de expresiones S se inspira en CLIPS, y la entrada se procesa equilibrando paréntesis para delimitar cada s-expression antes de evaluarla.

Lithp resulta útil para estudiantes y curiosos de la historia de la informática que quieran leer un intérprete pequeño, legible y comentado, y experimentar con él desde la línea de comandos.