Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article

Using circular programs to eliminate multiple traversals of data

Published: 01 October 1984 Publication History

Abstract

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.

References

[1]
Bird, R.S.: Programs and Machines -- An Introduction to the Theory of Computation. London: John Wiley 1976
[2]
Burstall, R.M., Darlington, J.: A transformation system for developing recursive programs. J. ACM 24, 44---67 (1977)
[3]
Burstall, R.M., Macqueen, D.B., Sannella, D.T.: HOPE: an experimental applicative language. Int Res Report. Dept Computer Science, University of Edinburgh 1980
[4]
Feather, M.: A system for assisting program transformation. ACM Trans Progr. Lang. Syst. 4, 1---20 (1982)
[5]
Henderson, P.: Functional Programming: Application and Implementation. Englewood Cliffs: Prentice-Hall 1980
[6]
Hughes, R.J.M.: The Design and Implementation of Programming Languages. D. Phil. Thesis. Oxford University 1983
[7]
Kott, L.: About a transformation system: a theoretical study. Proc. Third Symp. Progr. Paris, 1971
[8]
Turner, D.: Recursion equations as a programming language. In: Functional Programming and its Applications (Darlington, J., Henderson, P., Turner, D. (eds.). Cambridge: University Press, 1982
[9]
Wadler, P.: (personal communication)
[10]
Wadler, P.: Listlessness is better than laziness. Ph. D. Thesis, Carnegie-Mellon University, 1984

Cited By

View all
  • (2024)Compiling Haskell for Energy Efficiency: Empirical Analysis of Individual TransformationsProceedings of the 39th ACM/SIGAPP Symposium on Applied Computing10.1145/3605098.3635915(1104-1113)Online publication date: 8-Apr-2024
  • (2023)Phases in Software ArchitectureProceedings of the 1st ACM SIGPLAN International Workshop on Functional Software Architecture10.1145/3609025.3609479(29-33)Online publication date: 30-Aug-2023
  • (2023)Taype: A Policy-Agnostic Language for Oblivious ComputationProceedings of the ACM on Programming Languages10.1145/35912617:PLDI(1001-1025)Online publication date: 6-Jun-2023
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Acta Informatica
Acta Informatica  Volume 21, Issue 3
October 1984
89 pages

Publisher

Springer-Verlag

Berlin, Heidelberg

Publication History

Published: 01 October 1984

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 28 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Compiling Haskell for Energy Efficiency: Empirical Analysis of Individual TransformationsProceedings of the 39th ACM/SIGAPP Symposium on Applied Computing10.1145/3605098.3635915(1104-1113)Online publication date: 8-Apr-2024
  • (2023)Phases in Software ArchitectureProceedings of the 1st ACM SIGPLAN International Workshop on Functional Software Architecture10.1145/3609025.3609479(29-33)Online publication date: 30-Aug-2023
  • (2023)Taype: A Policy-Agnostic Language for Oblivious ComputationProceedings of the ACM on Programming Languages10.1145/35912617:PLDI(1001-1025)Online publication date: 6-Jun-2023
  • (2023)Efficient Embedding of Strategic Attribute Grammars via MemoizationProceedings of the 2023 ACM SIGPLAN International Workshop on Partial Evaluation and Program Manipulation10.1145/3571786.3573019(41-54)Online publication date: 15-Jan-2023
  • (2022)The Tortoise and the Hare Algorithm for Finite Lists, CompositionallyACM Transactions on Programming Languages and Systems10.1145/356461945:1(1-35)Online publication date: 26-Sep-2022
  • (2022)A strict functional language with cyclic recursive dataFormal Aspects of Computing10.1007/BF012125269:1(78-97)Online publication date: 2-Jan-2022
  • (2022)Breadth-First Traversal via StagingMathematics of Program Construction10.1007/978-3-031-16912-0_1(1-33)Online publication date: 26-Sep-2022
  • (2020)Knowing when to ask: sound scheduling of name resolution in type checkers derived from declarative specificationsProceedings of the ACM on Programming Languages10.1145/34282484:OOPSLA(1-28)Online publication date: 13-Nov-2020
  • (2019)Call-by-need is clairvoyant call-by-valueProceedings of the ACM on Programming Languages10.1145/33417183:ICFP(1-23)Online publication date: 26-Jul-2019
  • (2019)LoCal: a language for programs operating on serialized dataProceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3314221.3314631(48-62)Online publication date: 8-Jun-2019
  • Show More Cited By

View Options

View options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media