Topic summary

SECD machine

SECD machine

The SECD machine is an influential virtual machine and abstract machine intended as a target for compilers of functionalprogramming languages. The letters stand for stack, environment, control, dump, respectively, which are the internal registers of the machine. The registers stack, control, and dump point to (some realizations of) stacks, and environment points to (some realization of) an associative array.

The machine was the first to be specifically designed to evaluate lambda calculus expressions. It was originally described by Peter Landin in "The Mechanical Evaluation of Expressions" in 1964. The description published by Landin was fairly abstract, and left many implementation choices open (like an operational semantics).

Lispkit Lisp was a compiler based on the SECD machine, and the SECD machine has been used as the target for other systems such as Lisp/370. In 1989, researchers at the University of Calgary worked on a hardware implementation of the machine, with the same rationale as a high-level language computer architecture related to a Lisp machine.