Circular Programs and Self-Referential Structures
Lloyd Allison
TL;DR
The technique is used to implement the classic data structures circular and doubly‐linked lists, threaded trees and queues, in a functional programming language, and can be applied in an imperative language to give an elegant program.
Abstract
A circular program creates a data structure whose computation depends upon itself or refers to itself. The technique is used to implement the classic data structures circular and doubly-linked lists, threaded trees and queues, in a functional programming language. These structures are normally thought to require updatable variables found in imperative languages. For example, a functional program to perform the breadth-first traversal of a tree is given. Some of the examples result in circular data structures when evaluated. Some examples are particularly space-efficient by avoiding the creation of intermediate temporary structures which would otherwise later become garbage. Lastly, the technique can be applied in an imperative language to give an elegant program.
