Book contents
- Frontmatter
- Contents
- Foreword
- Preface
- Figures
- 1 Introduction
- I Formalisms for Computation: Register Machines, Exponential Diophantine Equations, & Pure LISP
- 2 The Arithmetization of Register Machines
- 3 A Version of Pure LISP
- 4 The LISP Interpreter EVAL
- II Program Size, Halting Probabilities, Randomness, & Metamathematics
- A Implementation Notes
- B The Number of S-expressions of Size N
- Bibliography
3 - A Version of Pure LISP
Published online by Cambridge University Press: 23 November 2009
- Frontmatter
- Contents
- Foreword
- Preface
- Figures
- 1 Introduction
- I Formalisms for Computation: Register Machines, Exponential Diophantine Equations, & Pure LISP
- 2 The Arithmetization of Register Machines
- 3 A Version of Pure LISP
- 4 The LISP Interpreter EVAL
- II Program Size, Halting Probabilities, Randomness, & Metamathematics
- A Implementation Notes
- B The Number of S-expressions of Size N
- Bibliography
Summary
Introduction
In this chapter we present a “permissive” simplified version of pure LISP designed especially for metamathematical applications. Aside from the rule that an S-expression must have balanced ()'s, the only way that an expression can fail to have a value is by looping forever. This is important because algorithms that simulate other algorithms chosen at random, must be able to run garbage safely.
This version of LISP developed from one originally designed for teaching [CHAITIN (1976a)]. The language was reduced to its essence and made as easy to learn as possible, and was actually used in several university courses. Like APL, this version of LISP is so concise that one can write it as fast as one thinks. This LISP is so simple that an interpreter for it can be coded in three hundred and fifty lines of REXX.
How to read this chapter: This chapter can be quite difficult to understand, especially if one has never programmed in LISP before. The correct approach is to read it several times, and to try to work through all the examples in detail. Initially the material will seem completely incomprehensible, but all of a sudden the pieces will snap together into a coherent whole. Alternatively, one can skim Chapters 3, 4, and 5, which depend heavily on the details of this LISP, and proceed directly to the more theoretical material in Chapter 6, which could be based on Turing machines or any other formalism for computation.
The purpose of Chapters 3 and 4 is to show how easy it is to implement an extremely powerful and theoretically attractive programming language on the abstract register machines that we presented in Chapter 2.
- Type
- Chapter
- Information
- Algorithmic Information Theory , pp. 51 - 68Publisher: Cambridge University PressPrint publication year: 1987