Early computers were rigid arithmetic calculators bound to numeric punch-card sequences; John McCarthy's 1960 LISP invention introduced recursive symbolic expressions, dynamic memory garbage collection, and functional programming.

In the late 1950s, digital computing was shackled to numerical calculations: simulating ballistic trajectories, solving differential equations, and compiling payroll spreadsheets. Machines processed fixed numbers, blind to the flexible symbolic reasoning of human thought.
To build artificial intelligence, machines needed to manipulate non-numeric symbols—sentences, logic trees, algebraic equations, and self-referential plans—without hardcoding fixed memory addresses.
John McCarthy invented LISP (List Processing), defining computation through recursive mathematical functions operating on symbolic expressions (S-expressions). In doing so, he introduced foundational computer science concepts: conditional expressions, first-class functions, code-as-data homoiconicity, and automatic memory garbage collection.
McCarthy's paper became the intellectual bedrock of computer science, directly inspiring functional programming languages like Clojure, Haskell, and Scala, while powering decades of symbolic AI, formal verification, and automated theorem proving.
Recursive functions of symbolic expressions and their computation by machine, Part I
This paper presents the LISP programming system, designed to support symbolic computation by defining partial recursive functions over symbolic expressions (“S-expressions”). It introduces conditional expressions, recursive function definitions, and a universal interpreter function (APPLY) capable of evaluating any S-function represented as an S-expression, similar in role to a universal Turing machine. The paper also explains the internal memory representation of symbolic expressions through list structures, automatic memory reclamation, and the compilation of recursive symbolic programs. The formalism shows that symbolic recursive functions provide both a practical programming language and a theoretical model of computation for reasoning, algebraic manipulation, and logic-based problem solving.
Ask this paper your own questions, or keep browsing the verified research catalogue.