There and Back Again

Authors

  • Olivier Danvy
  • Mayer Goldberg

DOI:

https://doi.org/10.7146/brics.v9i12.21730

Abstract

We present a programming pattern where a recursive function traverses a data structure--typically a list--at return time. The idea is that the recursive calls get us there (typically to a base case) and the returns get us back again while traversing the data structure. We name this programming pattern of traversing a data structure at return time ``There And Back Again'' (TABA).

The TABA pattern directly applies to computing a symbolic convolution. It also synergizes well with other programming patterns, e.g., dynamic programming and traversing a list at double speed. We illustrate TABA and dynamic programming with Catalan numbers. We illustrate TABA and traversing a list at double speed with palindromes and we obtain a novel solution to this traditional exercise.

A TABA-based function written in direct style makes full use of an Algol-like control stack and needs no heap allocation. Conversely, in a TABA-based function written in continuation-passing style, the continuation acts as a list iterator. In general, the TABA pattern saves one from constructing intermediate lists in reverse order.

See also BRICS-RS-05-3.

Downloads

Published

2002-03-05

How to Cite

Danvy, O., & Goldberg, M. (2002). There and Back Again. BRICS Report Series, 9(12). https://doi.org/10.7146/brics.v9i12.21730