Acta Informatica

, Volume 21, Issue 3, pp 239-250

First online:

Using circular programs to eliminate multiple traversals of data

  • R. S. BirdAffiliated withProgramming Research Group, Oxford University

Rent the article at a discount

Rent now

* Final gross prices may vary according to local VAT.

Get Access


This paper describes a technique for transforming functional programs that repeatedly traverse a data structure into more efficient alternatives that do not. The transformation makes essential use of lazy evaluation and local recursion (such as provided by letrec, or its equivalent) to build a circular program that, on one pass over the structure, determines the effects of the individual traversals and then combines them.