Implementación de la primera proyección de Futamura en Carp

Fuentes: Implementing the First Futamura Projection in Carp

Este artículo técnico detalla la implementación de la primera proyección de Futamura utilizando el lenguaje de programación Carp y el compilador compfuck. El objetivo es demostrar cómo un intérprete puede especializarse en tiempo de compilación para generar un compilador parcial, un concepto fundamental en la teoría de la computación. El autor explica que, aunque compfuck ya funciona como compilador, el proceso inverso es crucial para entender la abstracción de Futamura: convertir el compilador en un intérprete y luego extraer el código residual mediante evaluación parcial.

El texto describe cómo se transforma el compilador de compfuck en un intérprete que ejecuta instrucciones Brainfuck en tiempo de ejecución. Se introduce la macro de especialización, que permite evaluar las partes estáticas del programa (como la estructura de bucles y las operaciones de cinta) sin ejecutarlas en tiempo de ejecución. Esto genera un programa residual más eficiente que el intérprete original. El artículo destaca la importancia de mantener el código fuente accesible durante la especialización, utilizando macros de Carp para preservar la estructura del intérprete. Finalmente, se muestra cómo el código residual se integra en la API pública, demostrando que la proyección de Futamura permite derivar compiladores a partir de intérpretes, ofreciendo una perspectiva más profunda sobre la relación entre la ejecución y la compilación.