Man kann den Lambda-Kalkül in Haskell interpretieren:
%Vor%Wie könnte der obige Interpreter auf den Lambda-mu-Kalkül erweitert werden? Meine Vermutung ist, dass es Fortsetzungen für die Interpretation der zusätzlichen Konstrukte in diesem Kalkül verwenden sollte. (15) und (16) aus dem Bernardi & Moortgat-Papier sind die Art von Übersetzungen, die ich erwarte.
Es ist möglich, da Haskell Turing-vollständig ist, aber wie?
Hinweis: Siehe den Kommentar auf Seite 197 auf diese Forschungsarbeit für die intuitive Bedeutung des mu-Binders.
Hier ist eine sinnlose Transliteration der Reduktionsregeln aus dem Papier mit der Darstellung von @ user2407038 (wie Sie sehen werden, wenn ich sinnlos sage, ich meine wirklich hirnlos):
%Vor%Es "funktioniert" für das Beispiel aus dem Papier: mit
%Vor% Ich kann example n
auf das erwartete Ergebnis reduzieren:
Der Grund, warum ich Angstzitate um "Arbeiten" oben gesetzt habe, ist, dass ich keine Intuition über den λμ-Kalkül habe, also weiß ich nicht, was er tun soll.
Hinweis: Dies ist nur eine teilweise Antwort, da ich nicht sicher bin, wie ich den Interpreter erweitern soll.
Dies scheint ein guter Anwendungsfall für DataKinds zu sein. Der Expr
-Datentyp wird für einen Typ indiziert, der benannt oder unbenannt ist. Die regulären Lambda-Konstrukte erzeugen nur benannte Begriffe.
und die zusätzlichen Konstrukte Mu
und Name
können TermType
manipulieren.
Tags und Links haskell lambda-calculus continuations interpreter interpretation