Ich hatte kürzlich eine Diskussion mit einem Freund (der sich für stark typisierte Sprachen einsetzt). Er machte den Kommentar:
Die Erfinder von Lambda Calculus haben immer beabsichtigt, es zu tippen.
Jetzt können wir sehen, dass Church mit dem einfach getippten Lambda-Kalkül in Verbindung gebracht wurde . In der Tat scheint er den einfach getippten Lambda-Kalkül erklärt zu haben, um Missverständnisse über den Lambda-Kalkül zu vermeiden.
Jetzt, als John McCarthy Lisp kreierte, basierte er es auf dem Lambda-Kalkül . Dies hat er selbst zugegeben, als er "Rekursive Funktionen symbolischer Ausdrücke und ihre maschinelle Berechnung, Teil I" veröffentlichte . Sie können es hier lesen .
McCarthy scheint den einfach getippten Lambda-Kalkül nicht angesprochen zu haben. Dies scheint von Robyn Milner mit ML dominiert zu werden .
Es gibt einige Diskussionen über die Beziehung zwischen Lisp und Lambda - Kalkül hier , aber sie bekommen nicht wirklich auf den Grund , warum McCarthy wählte es nicht typisiert zu verlassen.
Meine Frage ist - Wenn McCarthy zugibt, dass er etwas über Lambda-Kalkül wusste - warum hat er den typisierten Lambda-Kalkül ignoriert? (dh - ist es wirklich offensichtlich, dass Lambda-Kalkül geschrieben werden sollte? Es scheint nicht so)
Antworten:
Erstens ist Ihr Freund in Bezug auf die Geschichte des Kalküls falsch. Church schuf zuerst den untypisierten Kalkül, den er als Grundlage für die Mathematik vorsah. Ziemlich schnell stellte sich heraus, dass die von diesem Kalkül abgeleitete Logik inkonsistent war (weil nicht terminierende Programme existierten). Schließlich entwickelte Church auch die einfache Typentheorie und viele andere Dinge, aber das war nicht der ursprüngliche Punkt des Systems.λ
Einen hervorragenden Überblick über die Geschichte finden Sie in diesem Artikel .
Zweitens ist der einfach getippte Lambda-Kalkül eine recht restriktive Sprache. Sie benötigen eine Form von rekursivem Typ, um eine interessante Art von Programm darin zu schreiben. Sicherlich wäre es unmöglich, die Arten von Programmen in McCarthys Originalarbeit mit den auf Kalkuli basierenden Typsystemen zu schreiben, die 1958 verstanden wurden. Zu diesem Zeitpunkt waren es die fortschrittlichsten Programmiersysteme, die in Fortran und COBOL zu finden waren.λ
quelle