Was ist der Zweck des SKI-Kombinator-Kalküls (oder sogar des Lambda-Kalküls)? Was sind einige Beispiele aus der Praxis?


8

Ich verstehe, was es ist, aber ich sehe nicht, wie es für Algorithmen oder irgendetwas nützlich ist. Vielleicht fehlt mir etwas. Ich brauche jemanden, der mir ein Beispiel gibt, wie es verwendet werden kann, damit ich es besser verstehen kann.


2
Es gibt mehrere esoterische Programmiersprachen, die auf kombinatorischer Logik basieren, z . B. Unlambda . Siehe auch hier . Weitere Informationen finden Sie unter den Links in den Artikeln.
Anton Trunov

Antworten:


11

Die offensichtliche Anwendung des Lambda-Kalküls ist jede funktionale Programmiersprache (z. B. Lisp, ML, Haskell) und jede Sprache, die anonyme Funktionen unterstützt.

Muss es für die Kombinatorrechnung eine "reale Anwendung" geben? Turingmaschinen zum Beispiel werden "in der realen Welt" kaum eingesetzt, bilden aber die Grundlage der Berechnungstheorie. Ein nützliches Merkmal von Kombinatorberechnungen ist, dass sie einfachere Systeme sind als z. B. Turing-Maschinen. Wenn Sie beweisen möchten, dass ein anderes System Turing-vollständig ist, ist es möglicherweise einfacher zu zeigen, wie es Kombinatoren simulieren kann, als zu zeigen, dass es eine Turing-Maschine simulieren kann.


1
Natürlich combinators wurden in der Zusammenstellung von funktionalen Sprachen (wenn auch nicht der SKI Kalkül selbst) verwendet.
Cody

1
@cody Bitte poste eine Antwort dazu! Ich weiß nichts darüber, deshalb möchte ich meine Antwort lieber nicht bearbeiten.
David Richerby

3
Zum Beispiel wurde gezeigt, dass das Typensystem von Scala durch Einbetten des SK-Kalküls Turing-vollständig ist. Ich kann mir gar nicht vorstellen, wie absurd komplex es ist, eine (universelle) Turingmaschine einzubetten. Ironischerweise (mit dem Namen angegeben) wird die Turinf-Vollständigkeit bei Turing-Maschinen selten gezeigt. Es wurde gezeigt, dass SQL TC ist, indem ein zyklisches Tag-System, HTML + CSS mit Regel 101, die Intel-MMU implementiert wird, indem eine Anweisung "Verschieben, Verzweigen, wenn Null, Dekrementieren" codiert wird.
Jörg W Mittag

@ JörgWMittag re: " HTML + CSS mit Regel 101 " meinten Sie " Regel 110 "?
RBarryYoung

@RBarryYoung: Natürlich dummer Tippfehler. Der Code ist hier: github.com/elitheeli/stupid-machines
Jörg W Mittag

5

Ich fand SKI nützlich, um einige logische Axiome zu verstehen.

Zum Beispiel ist eine Hilbert-artige Axiomatisierung der (intuitionistischen) Implikation

(einbc)(einb)eincein(bein)

Als ich diese Axiome zum ersten Mal sah, fragte ich mich, warum um alles in der Welt sie funktionieren sollten. Sicher, es ist leicht zu überprüfen, ob sie halten. Aber warum sollten diese ausreichen, dh warum die alleinige Verwendung dieser beiden Postulate ausreicht, um (durch modus ponens) alle anderen impliziten Tautologien zu beweisen? Geheimnis ... oder doch?

S.,K.S.K.S.K.


2

Schauen Sie sich Microsoft LINQ (Language INtegrated Query) an. Der Lambda-Kalkül wird in großem Umfang und direkt verwendet, um Ausdrucksbäume zu manipulieren und zu transformieren. Das wahrscheinlich vollständigste und komplexeste Beispiel wäre Linq2SQL (die SQL Server-Implementierung), das effizient komplexe Transformationen durchführt, die die Teile des Ausdrucksbaums trennen, die an den Datenbankserver delegiert werden können.

Dies ist kaum die erste Technologie, die Abfragen ermöglicht, bei denen Daten aus mehreren Quellen kombiniert werden. Es ist jedoch möglicherweise die erste, die das Entwirren von Abhängigkeiten automatisiert, um die Massenmanipulationsfunktionen von Datenbankservern zu nutzen. Es ist nicht perfekt (manchmal muss man ihm helfen), aber es macht das Grunzen sehr gut und mit Liebe zum Detail bekommt man es nicht von Menschen.

Wenn Sie sie haben , ihm zu helfen, nimmt das Kalkül zu verstehen Ihnen einen langen Weg in Richtung herauszufinden , was sie stört - so zusätzlich zu was es benutzt wird? Es gibt Ihre Antwort auf Warum muss ich das lernen, wenn Maschinen es für mich tun?

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.