SLED: un LISP simbólico para DOS inspirado en Scheme

Fuentes: SLED - Schemy LISP en DOS

SLED (Schemy LISP en DOS) es un intérprete de LISP puramente simbólico inspirado en Scheme y derivado del proyecto Kilo LISP. Funciona como aplicación nativa de DOS, por lo que puede ejecutarse en FreeDOS, MS-DOS y en emuladores como DOSBox, DOSBox-X y DOSBox-Staging. Se concibe como un "Ur-Lisp": prescinde de macros respecto a su ancestro y suma otras características propias.

El sistema se basa en dos tipos de datos fundamentales: átomos y pares (cons cells). Los átomos pueden ser símbolos, clausuras o símbolos especiales predefinidos como nil. Los símbolos admiten letras, dígitos y los caracteres -, ., ? y _, con un máximo de 16 caracteres y la salvedad de que el punto no puede ir al principio. Cualquier carácter ASCII imprimible puede formar parte de un símbolo si se precede de una barra invertida. Las letras mayúsculas se convierten a minúsculas salvo escape.

SLED no incluye tipos numéricos: los números naturales se representan mediante listas de nils (numerales de tiza o ordinales de von Neumann), y las funciones inc, dec y zero? facilitan el conteo. Las listas son cadenas de pares terminadas en nil; existen también listas impropias y listas de asociación. Las S-expresiones se usan tanto para datos como para código fuente.

El evaluador es eager y recursivo; incorpora un trampolín y optimización de cola (TCO) para lambda, let, begin, if, ifnil y apply, lo que reduce el riesgo de desbordamiento de pila. El arranque carga primero la biblioteca estándar (sled.scm), cuyos símbolos son inmutables. El binario admite argumentos de línea de comandos para mostrar ayuda, cargar un script, ejecutarlo en modo batch (/B) o continuar pese a errores (/I). Tras la inicialización se abre el REPL.