Historische Beziehung zwischen typisiertem Lambda-Kalkül und Lisp?


16

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)


1
Hat wahrscheinlich etwas damit zu tun, dass der typisierte Lambda-Kalkül nicht vollständig ist.
Jan Johannsen

Danke @JanJohannsen - könntest du das erweitern?
Hawkeye

Antworten:


17

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.λ


Wow - von der qualifiziertesten Person der Welt zu diesem Thema beantwortet. Danke @Sam. Vielleicht bekomme ich bis Ende des Jahres eine Doktorandenbewerbung. (Es hört sich so an, als würde sich Ambrose BS darauf freuen, mit euch zusammenzuarbeiten.)
Hawkeye

3
Ich bin wirklich sehr weit von der qualifiziertesten Person der Welt in diesem Bereich entfernt.
Sam Tobin-Hochstadt

Die Verbindung scheint unterbrochen zu sein. Ich glaube, das ist das gleiche Papier: hope.simons-rock.edu/~pshields/cs/cmpt312/cardone-hindley.pdf
bmaddy
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.