Ich habe versucht, mich mit dem Was, Warum und Wie von Kalkulus zu beschäftigen, aber ich bin nicht in der Lage, mich mit "Warum funktioniert es?"
"Intuitiv" erhalte ich das Rechenmodell von Turing Machines (TM). Aber diese lgr; -Abstraktion lässt mich nur verwirrt.
Nehmen wir an, TMs existieren nicht - wie kann man dann "intuitiv" von der Fähigkeit von -calculus überzeugt werden , diesen Begriff der Berechenbarkeit zu erfassen? Wie impliziert es die Berechenbarkeit, über eine Reihe von Funktionen für alles und deren Komposibilität zu verfügen? Was vermisse ich hier? Ich habe die Zeitung von Alonzo Church darüber gelesen, aber ich bin immer noch verwirrt und suche nach einem "heruntergekommenen" Verständnis davon.
Antworten:
Du bist in guter Gesellschaft. Kurt Gödel kritisierteλ
Um eine Vorstellung davon zu bekommen, wie ein Rechenmodell funktioniert, schreiben Sie am besten einige Programme in dieses Modell. Aber Sie müssen es nicht in reinem Kalkül tun, obwohl es Spaß macht (auf die gleiche Weise wie Feuerlaufen). Sie können einen modernen Abkömmling des λ- Kalküls wie Haskell verwenden.λ λ
quelle
Sie programmieren darin! Schauen Sie sich die Kodierungen der Kirche an . Sie können sehen, wie so ziemlich alle Arithmetik ausgeführt werden kann, was Sie wahrscheinlich davon überzeugen dürfte, dass sie äußerst leistungsfähig ist. Ich mag es jedoch, Operationen auf Listen zu betrachten. Sie können fast jede Datenstruktur anhand einer Funktion definieren, die die wichtigste Operation ausführt.
Zum Beispiel ist eine Kodierung einer Liste die Fold-Funktion, die darüber faltet. Beachten Sie, dass dies nicht die Codierung von Church ist, sondern eine, die ich von Percies Typen und Programmiersprachen erhalten habe. Churchs Paarkodierungen geben uns keine Rekursion, wir müssen sie mit einer Art Rekursionskombinator wieder in uns selbst einfügen.
Daher benötigt eine Liste zwei Argumente, eine Funktion zum Falten und einen Anfangswert, um an einem bestimmten Punkt in die Falte eingefügt zu werden.
Jetzt können wir eine Summation mit einer Additionsfunktion definieren (siehe oben).
Wir können mehr tun und eine Kartenfunktion definieren
Wenn Sie immer noch nicht davon überzeugt sind, dass hier eine Berechnung stattfindet, und sicherstellen möchten, dass Sie eine Berechnung durchführen können, überprüfen Sie diese den Festkomma-Kombinator . Es tut mir ein bisschen weh, manchmal darüber nachzudenken, also bin ich mir nicht sicher, ob ich es als intuitiv bezeichnen würde, aber wenn Sie es manuell mit einigen Argumenten auswerten, können Sie sehen, was los ist.
quelle