Correct and Optimal Implementations of Recursion in a Simple Programming Language

The object of this paper is to study the mechanism of recursion in a simple, LISP-like programming language, where the only means of iteration is through recursion. The theory of computation developed in Scott [6] provides the framework of our study. We show how the implementations of recursion which deserve to be called “correct” can be characterized semantically, and demonstrate a general criterion for the correctness of an implementation. We then describe an implementation of recursion which is both correct and optimal in a general class of sequential languages, and therefore constitutes an attractive alternative to both “call-by-name” and “call-by-value”.