Table of Contents
Fetching ...

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.

Circular Programs and Self-Referential Structures

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.
Paper Structure (10 sections)