interpretiere Parigots Lambda-mu-Kalkül in Haskell

8

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.

    
Bob 26.02.2015, 20:28
quelle

3 Antworten

4

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:

%Vor%

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.

    
Cactus 27.02.2015 07:24
quelle
3

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.

%Vor%

und die zusätzlichen Konstrukte Mu und Name können TermType manipulieren.

%Vor%     
user2407038 26.02.2015 21:02
quelle
1

Wie wäre es mit etwas wie dem Folgenden? Ich habe keine gute Idee, wie Value a durchlaufen werden kann, aber zumindest kann ich sehen, dass example n in MuV ausgewertet wird.

%Vor%     
Cactus 06.03.2015 10:33
quelle