ABSTRACT
Over forty years ago, David Barron and Christopher Strachey published a startlingly elegant program for the Cartesian product of a list of lists, expressing it with a three nested occurrences of the function we now call foldr. This program is remarkable for its time because of its masterful display of higher-order functions and lexical scope, and we put it forward as possibly the first ever functional pearl. We first characterize it as the result of a sequence of program transformations, and then apply similar transformations to a program for the classical power set example. We also show that using a higher-order representation of lists allows a definition of the Cartesian product function where foldr is nested only twice.
- David Barron. 1975. Christopher Strachey: a personal reminiscence. Computer Bulletin, 2 (5): 8-9.Google Scholar
- David W. Barron and Christopher Strachey. 1966. Programming. In Leslie Fox, editor, Advances in Programming and Non-Numerical Computation, pages 49--82. Pergammon Press.Google Scholar
- Olivier Danvy and Lasse R. Nielsen. 2001. Defunctionalization at work. In Harald Søndergaard, editor, Proceedings of the Third International ACM SIGPLAN Conference on Principles and Practice of Declarative Programming (PPDP'01), pages 162--174, Firenze, Italy. ACM Press. Extended version available as the research report BRICS RS-01-23. Google Scholar
Digital Library
- Olivier Danvy and Ulrik P. Schultz. 2000. Lambda-dropping: Transforming recursive equations into programs with block structure. Theoretical Computer Science, 248 (1-2): 243--287. A preliminary version was presented at the 1997 ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation (PEPM 1997). Google Scholar
Digital Library
- Michael J. C. Gordon. 1973. An investigation of lit. Technical Report Memorandun MIP-R-101, School of Artificial Intelligence, University of Edinburgh.Google Scholar
- Michael J. C. Gordon. 1979. On the power of list iteration. The Computer Journal, 22 (4): 376--379.Google Scholar
Cross Ref
- Mike Gordon. 2000. Christopher Strachey: recollections of his influence. Higher-Order and Symbolic Computation, 13 (1/2): 65--67. Google Scholar
Digital Library
- Patrick Greussay. 1978. Le système VLISP 16. Université Paris-8-Vincennes et LITP.Google Scholar
- David Hartley. 2000. Cambridge and CPL in the 1960s. Higher-Order and Symbolic Computation, 13 (1/2): 69--70. Google Scholar
Digital Library
- John Hughes. 1986. A novel representation of lists and its application to the function "reverse". Information Processing Letters, 22 (3): 141--144. Google Scholar
Digital Library
- Thomas Johnsson. 1987. Attribute grammars as a functional programming paradigm. In Gilles Kahn, editor, Functional Programming Languages and Computer Architecture, number 274 in Lecture Notes in Computer Science, pages 154--173, Portland, Oregon. Springer-Verlag. Google Scholar
Digital Library
- Martin Richards. 2000. Christopher strachey and the Cambridge CPL compiler. Higher-Order and Symbolic Computation, 13 (1/2): 85--88. Google Scholar
Digital Library
- Christopher Strachey. 1961. Handwritten notes. Archive of working papers and correspondence. Bodleian Library, Oxford, Catalogue no. MS. Eng. misc. b.267.Google Scholar
Index Terms
On Barron and Strachey's cartesian product function
Recommendations
On Barron and Strachey's cartesian product function
Proceedings of the ICFP '07 conferenceOver forty years ago, David Barron and Christopher Strachey published a startlingly elegant program for the Cartesian product of a list of lists, expressing it with a three nested occurrences of the function we now call foldr. This program is remarkable ...
Strachey, Christopher
Encyclopedia of Computer ScienceChristopher Strachey (1916-1975) was Professor of Computer Science at Oxford University from 1971 until his death. He was born into the well-known Strachey family, associated with the Engilsh artistic circle, the "Bloomsbury Group." He showed a ...
Christopher Strachey, 1916-1975: A Biographical Note
Christopher Strachey was one of the most original computer scientists of his generation: his fields were computer design and programming, and he made important contributions to them both. He liked to say (not quite accurately) that he had changed the ...







Comments