Modelado de sistemas de actores con PLT Redex: el fragmento funcional ISWIM

Fuentes: Modelling Actors with Redex: Part I — The Functional Fragment, ISWIM in Redex

Este artículo, primero de una serie de tres, presenta un modelo de un lenguaje funcional minimalista inspirado en ISWIM —el experimento mental de Peter Landin descrito en "The Next 700 Programming Languages"— implementado con PLT Redex, el lenguaje de dominio específico de Racket para especificar y depurar semánticas operacionales. El objetivo declarado de la serie es construir paso a paso un sistema de actores al estilo de Erlang, partiendo de una base puramente funcional y añadiendo después construcciones de comunicación entre actores.

El fragmento funcional define una sintaxis basada en S-expresiones con números, cadenas y booleanos, además de variables y un operador primitivo cons que actúa simultáneamente como expresión y como valor. El modelo incorpora contextos de evaluación al estilo de Felleisen y Hieb (1986-1987), lo que fuerza un orden de evaluación de argumentos de izquierda a derecha. La semántica operativa se especifica mediante reglas de reducción que cubren la beta-reducción, la interpretación de operadores primitivos a través de una metafunción delta que delega en Racket, la eliminación progresiva de begin, la evaluación condicional de if, y el despliegue de valores recursivos.

Un elemento clave es el uso de la infraestructura de formas vinculantes de Redex —incorporada tras la tesis doctoral de Paul Stansifer— para declarar la estructura de ligadura de lambda y rec, lo que permite generar automáticamente las funciones de sustitución y alfa-equivalencia, eliminando la necesidad de escribirlas a mano. El artículo concluye con ejemplos y pruebas ejecutables en DrRacket, aprovechando el visualizador de trazas de Redex para explorar interactivamente la reducción de términos. El texto se distribuye como un archivo literate Racket bajo licencia CC-BY 4.0, listo para descargar y ejecutar.