Circular Programs and Self-Referential Structures
<|reference_start|>Circular Programs and Self-Referential Structures: 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.<|reference_end|>
@article{allison2024circular,
    title={Circular Programs and Self-Referential Structures},
    author={Lloyd Allison},
    journal={Software Practice and Experience, 19(2), 99-109, 1989},
    year={2024},
    doi={10.1002/spe.4380190202},
    archivePrefix={arXiv},
    eprint={2403.01866},
    primaryClass={cs.PL}
}