#### John McCarthy and LISP

https://www.lisp.org

### Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I

#### This was the original paper on LISP.

It is copied with minor notational changes from CACM, April 1960. If you want
the exact typography, look there. A few typographical changes have been made,
but the notation has not been modernized. There are also some new explanatory
footnotes. Part II, which never appeared, was to have had some Lisp programs
for algebraic computation.

In this article, we first describe a formalism for defining functions
recursively. We believe this formalism has advantages both as a programming
language and as a vehicle for developing a theory of computation. Next, we
describe S-expressions and S-functions, give some examples, and then describe
the universal S-function apply which plays the theoretical role of a universal
Turing machine and the practical role of an interpreter. Then we describe the
representation of S-expressions in the memory of the IBM 704 by list structures
similar to those used by Newell, Shaw and Simon, and the representation of
S-functions by program. Then we mention the main features of the LISP
programming system for the IBM 704. Next comes another way of describing
computations with symbolic expressions, and finally we give a recursive
function interpretation of flow charts.

Download the article in PDF