Klop, van Oostrom und de Vrijer haben eine Arbeit über den Lambda-Kalkül mit Mustern.
http://www.sciencedirect.com/science/article/pii/S0304397508000571
In gewissem Sinne ist ein Muster ein Baum von Variablen - obwohl ich es nur als verschachteltes Tupel von Variablen betrachte, zum Beispiel ((x, y), z), (t, s)).
In der Arbeit zeigten sie, dass, wenn die Muster linear sind, in dem Sinne, dass keine Variable in einem Muster wiederholt wird, die Regel gilt
(\p . m) n = m [n/p]
Dabei ist p ein variables Muster, und n ist ein Tupel von Termen mit der exakt gleichen Form wie p und ist konfluent.
Ich bin gespannt, ob es in der Literatur ähnliche Entwicklungen für den Lambda-Kalkül mit Mustern und der zusätzlichen eta-Regel (Expansion, Reduktion oder einfach nur Gleichheit) gibt.
Insbesondere meine ich mit eta
m = \lambda p . m p
Direkter bin ich gespannt, welche Eigenschaften eine solche Lambda-Rechnung haben würde. Ist es zum Beispiel konfluent?
Es erzwingt das Schließen der klassifizierenden Kategorie, weil es die Eigenschaft erzwingt, dass
m p = n p implies m = n
Mit der \ xi-Regel dazwischen. Aber vielleicht könnte etwas schief gehen?
quelle
Antworten:
Dies ist keine vollständige Antwort. Es ist ein Kommentar, der zu groß geworden ist.
Wenn Sie typisierte Lambda-Berechnungen mit Produkten mit projektiven Eliminatoren (dh Produkteliminatoren
fst(e)
undsnd(e)
) erweitern, gibt es grundsätzlich keinerlei Probleme. Der Grund, warum es so lange gedauert hat, ist, dass es sich als natürlicher herausstellt, Eta- Erweiterungen anstelle von Eta- Reduzierungen durchzuführen . Siehe Barry Jays Die Tugenden der Eta-Erweiterung .Wenn Sie möchten, dass die Produkte einen Mustereliminator haben
Dann sind die Dinge komplexer. Die Hauptschwierigkeiten beim Pattern Matching sind die Pendelkonvertierungen . Das heißt, diese Kalküle haben die Gleichung
und herauszufinden, (a) welcher Kontext
C[-]
verwendet werden soll und (b) wie diese Gleichung zu orientieren ist, wird schwierig. IMO, der Stand der Technik für Umschreibungsansätze, sind Sam Lindleys Extensional Rewriting with Sums und Gabriel Scherers Deciding Equivalence with Sums und der Empty Type , die beide den typisierten Lambda-Kalkül sowohl für Produkte als auch für Summen berücksichtigen.quelle