Sind Sie auf der Suche nach Details speziell zum Kompilieren von Lazy-Evaluation? Es Simon Peyton-Jones ist Buch von Max Bolingbroke erwähnt, auch das Buch Saubere Implementierung Detaillierung ist online:
http://wiki.clean.cs.ru.nl/Functional_Programming_and_Parallel_Graph_Rewriting
Wenn Sie eine Hochschulzugehörigkeit haben und wollen etwas kleiner Sie könnten versuchen, diese Bücher zu bekommen (Henderson & Diller sind sicherlich vergriffen):
Antoni Diller "Übersetzen Funktion Sprachen" ISBN 0 471 92027 4
Peter Henderson "Functional Programming Anwendung und Implementation" ISBN 0-13-331579-7
AJT Davie "Eine Einführung in die funktionale Programmierung Systeme mit Haskell" ISBN 0 521 27724 8
Diller hat einen vollen Compiler für einen faulen Sprache (implementiert in Pascal) über combinator Reduktion. Dies war die von David Turner für SASL erfundene Implementierungstechnik. Henderson hat viele Teile eines Compilers für LISPkit, eine faule Variante von Lisp. Davie stellt ziemlich viel von der Maschinerie zur Verfügung, um eine faule Sprache zu kompilieren, zum Beispiel gibt es eine Beschreibung der STG, die viel kürzer ist als das Buch von Simon Peyton-Jones (die STG ist die abstrakte Maschine SPJ, die für Haskell verwendet wird).
Die Clean-Entwickler haben ziemlich viel Informationen über die Umsetzung SAPL (eine einfache Applicative Language), wenn Sie ihre Publikationsliste durchsehen:
http://www.st.cs.ru.nl/Onderzoek/Publicaties/publicaties.html
schließlich eine ganze Reihe von Papieren gibt es dokumentieren Aspekte der Utrecht Haskell Compiler UHC (und EHC). Ich denke, die meisten Informationen sind, wie der Compiler organisiert ist (mit Attributgrammatiken und "Shuffle") und wie die Typsysteme (es gibt verschiedene Ebenen des Typsystems in EHC) implementiert sind, anstatt wie die Backend-Kompilierung funktioniert.
Ausgezeichnete Frage. Ich würde gerne wissen, ob CPS-Transformation a la Schema verwendet wird oder nicht. Ich glaube fest daran, dass es "der" Weg ist, um funktionale Sprachen zu implementieren, aber ich kann die Schwierigkeiten übersehen. –
Wenn Sie wissen wollen, was CPS ist, dann ist das ausgezeichnete "Lambda the ultimate goto" -Papier des Autorentwurfs eine großartige Lektüre. –
Nicht genau das, wonach Sie fragen, aber ich würde empfehlen, andere Compiler als GHC zu starten. Die Quelle von JHC ist sehr gut lesbar und der UHC-Code hat eine Menge guter theoretischer Dokumentation; beides wäre einfacher als GHC. –