Lesen Sie McCarthy's 1960, "Rekursive Funktionen symbolischer Ausdrücke und ihre Berechnung nach Maschinen, Teil I" .
Er beginnt mit der Definition von S-Ausdrücken. Eine der Regeln ist, dass, wenn e1 ein S-Ausdruck und e2 ein S-Ausdruck ist, dann & lt; e1. e2 & gt ;, das punktierte Paar, ist ebenfalls ein S-Ausdruck.
Einige Zeilen später definiert er die Listennotation als Abkürzung für einen Ausdruck, der aus einer Kette von Punkten besteht.
Dies war das Papier, das zuerst definierte, was schließlich LISP werden sollte. Es wurde keine eigentliche Programmiersprache, bis Steve "Slug" Russell den ersten Interpreter implementierte.
Wie Sie in den Kommentaren zu Ihrer Frage lesen können, wurde das punktierte Paar nicht neben einem bereits vorhandenen Listentyp eingeführt. Stattdessen wurde es als anfängliche Datenstruktur eingeführt, und Listen werden in gepunkteten Paaren implementiert.
Was die Frage warum das gepunktetes Paar anbetrifft, glaube ich, dass es von der Hardware geleitet wurde, auf der das ursprüngliche LISP-System implementiert war: das IBM 704. Wie man in der Wikipedia-Artikel über car
und cdr
, es hatte ein 36-Bit-Wort, auf das in vier Teilen zugegriffen werden konnte: zwei 15-Bit- und zwei 3-Bit-Teile.
Bei einer Hardware wie dieser ist es ganz natürlich, eine 15-Bit-Adresse in jeden der beiden 15-Bit-Teile eines Maschinenworts zu schreiben, und voilà, Sie haben ein "gepunktetes Paar".
Siehe auch die Geschichte von Lisp , für weitere Informationen über das Design des System.