Ich lese gerade " Lambda-Kalkül und Kombinatoren " von Hindley und Seldin. Ich bin kein Experte, habe mich aber immer für Lambda-Kalkül interessiert, weil ich mich mit funktionaler Programmierung befasst habe (angefangen mit Lisp und SICP, und jetzt mit R und Haskell).
In " Binary Lambda Calculus and Combinatory Logic" stellt John Tromp fest:
CL kann als Teilmenge der Lambda-Rechnung angesehen werden ... die Theorien sind weitgehend gleich und werden bei Vorhandensein der Extensionalitätsregel gleich.
Unter welchen Bedingungen würde man kombinatorische Logik anstelle von Lambda-Kalkül verwenden ?
Alle Referenzen wäre dankbar.
Antworten:
Was die kombinatorische Logik auszeichnet, ist, dass sie frei von Variablen ist. Dies ist manchmal nützlich in der Metamathematik und der philosophischen Logik, wo der Status von Variablen schwierig ist.
Dies kann auch bei Implementierungen hilfreich sein, da das Verwalten von Variablen Kopfzerbrechen verursachen kann. Vgl. Z. B. Hughes, 1982, Superkombinatoren: Eine neue Implementierungsmethode für anwendbare Sprachen
quelle
Unter Bezugnahme auf den Kommentar von John Tromp möchte ich bemerken, dass sich die kombinatorische Logik ganz anders anfühlt als die Lambda-Rechnung. Da Sie sich für funktionale Programmierung interessieren, möchten Sie wirklich nicht so viel über kombinatorische Logik wissen.
Mein Lieblingstutorial zur kombinatorischen Logik ist in diesen Vorlesungsskripten der Universität Cambridge.
Sie werden jedoch eingeführt, um die Implementierung sogenannter fauler (oder anwendungsbezogener) Sprachen zu erläutern. Wie in meinem vorherigen Kommentar erwähnt, sind solche Techniken mittlerweile veraltet.
quelle