Lisp moving Forth moving Lisp
Le chapitre décrit l’implémentation d’un interpréteur Forth en Common Lisp en s’appuyant sur des macros et des abstractions pour enseigner la métaprogrammation forth dans un style lispy. Il présente les concepts fondamentaux de Forth — registres abstraits (pstack, rstack, pc, dict…), la séparation des piles paramètre et retour, le dictionnaire de mots et le code threadé — et les représente en Lisp par des listes cons et des closures. L’auteur implémente des primitives et des macros (dont un inner-interpreter en cons-threaded code, def-forth-prim, et des mots immédiats) et propose les notions de brièveté et de dualité de syntaxe pour expliquer pourquoi les macros rendent les transformations de code plus aisées. Il expose également une technique de « flubification » qui traduit des threads Forth en code Lisp exécutable via liaisons labels/tagbody, tout en précisant les limitations liées à l’absence d’accès direct à la pile de retour et à certaines constructions non transposables. L’ensemble illustre que Lisp et Forth se complètent pour la métaprogrammation, montrant comment les macros permettent d’étendre et de transformer les langages et d’expérimenter de nouvelles dualités de syntaxe.