Im funktionalen Paradigma ist eine Funktion eine primäre "Kontrollstruktur". Zum Beispiel wird der Operator +
auch als eine Funktion behandelt und Sie können sie wie alle anderen "Objekte" weitergeben. Ich frage mich, ob ich, wenn ich eine funktionale Spielzeugsprache implementieren müsste, einfache Funktionen als echte Funktionen implementieren würde (d. H. +
in eine aufrufbare Routine übersetzen) oder sie in normale Anweisungen übersetzen würde, die "inline" in den übersetzten Code eingefügt würden. Aber könnte ich sie dann mit der zweiten Strategie weitergeben und teilweise wie in Haskell anwenden? Was denken Sie über die Implementierung/Übersetzung von Funktionen als zentrale Idee in einer funktionalen Sprache?Wie würden Sie eine funktionale Programmiersprache implementieren?
7
A
Antwort
0
Ich kann das PJL Buch empfehlen. Ich schrieb einen Compiler mit Hilfe von ihm (in 1989-1990, in Prolog) und das Buch ist eine sehr gute Einführung in das Thema.
Es könnte datiert sein (geschrieben in 1987, vor 30 Jahren), aber es deckt immer noch die Grundlagen sehr gut ab. Es ist jedoch vollständig auf faule Sprachen wie Haskell konzentriert. Zu der Zeit existierte Haskell nicht und das Buch verwendet LML oder Miranda, eine Vorgängersprache, aber die Sprachen sind sehr nahe.
So etwas würde ich mir vorstellen: http://mitpress.mit.edu/sicp/ –
Die zweite Strategie ist bekannt als Defunktionalisierung: http://en.wikipedia.org/wiki/Defunktionalization –
Wenn Sie wollten Um eine funktionale Spielzeugsprache von Grund auf neu zu implementieren, würde ich empfehlen, dass Sie dem Rat folgen: http://research.microsoft.com/en-us/um/people/simonpj/Papers/pj-lester-book/ Wenn Sie wollten Wiederverwenden der Haskell-Laufzeit Ich würde empfehlen, hier zu starten: * http://www.grabmueller.de/martin/www/pub/Transformers.en.html –