Normal-Order Direct-Style Beta-Evaluator mit Syntaxregeln und wiederholten Anwendungen von call/cc

2025-09-17

Dieser Artikel untersucht weniger bekannte Anwendungen von call/cc in hygienischen Scheme-Makros, insbesondere seine Verwendung zur Unterstützung mühsamer Lambda-Berechnungen. Der Autor präsentiert einen Normal-Order Direct-Style Beta-Normalisierer, der Syntaxregeln und wiederholte Anwendungen von call/cc geschickt kombiniert und seine Korrektheit mittels CPS-Transformation und eines genialen Direct-Style Lambda-Calculators beweist. Der Artikel befasst sich auch mit delimitated continuations und zeigt, wie einfache Makros verschiedene delimited continuation Operatoren wie prompt und control implementieren können. Eine call/cc-basierte Implementierung einer Fakultätsfunktion und eine Diskussion über delimited continuations unterstreichen die Eleganz und Praktikabilität des Ansatzes.

Mehr lesen
Entwicklung

Inkrementaler Compilerkurs: Von Tiger zu x86-64 Assembler in OCaml

2025-04-05

Dies ist ein sehr praxisorientierter Compilerkurs mit dem Ziel, einen Compiler zu bauen, der die höhere Programmiersprache Tiger in x86-64 Maschinencode übersetzt. Der Kurs verwendet OCaml und betont testgetriebene Entwicklung, Versionskontrolle und Code-Wiederverwendung. Es wird ein iterativer, inkrementeller Entwicklungsansatz verwendet, bei dem Sprache und Compiler schrittweise erweitert werden, wobei der tagless-final Stil für verbesserte Erweiterbarkeit genutzt wird. Der Kurs behandelt Standardthemen von Compilerkursen wie Parsing, Typprüfung, Optimierung und Assemblergenerierung, jedoch auf eine nicht-traditionelle Weise.

Mehr lesen