Advertisement

The Higher-Order Aggregate Update Problem

  • Christos Dimoulas
  • Mitchell Wand
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5403)

Abstract

We present a multi-pass interprocedural analysis and transformation for the functional aggregate update problem. Our solution handles untyped programs, including unrestricted closures and nested arrays. Also, it can handle programs that contain a mix of functional and destructive updates. Correctness of all the analyses and of the transformation itself is proved.

Keywords

Small Solution Reachability Analysis Functional Language Lambda Calculus Liveness Analysis 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Draghicescu, M., Purushothaman, S.: A uniform treatment of order of evaluation and aggregate update. Theoretical Computer Science 118(2), 231–262 (1993)MathSciNetCrossRefzbMATHGoogle Scholar
  2. 2.
    Felleisen, M., Friedman, D.P.: A calculus for assignments in higher-order languages. In: ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, p. 314 (1987)Google Scholar
  3. 3.
    Guzman, J.C., Hudak, P.: Single-threaded polymorphic lambda calculus. In: IEEE Symposium on Logic in Computer Science, pp. 333–343 (1990)Google Scholar
  4. 4.
    Hudak, P., Bloss, A.: The aggregate update problem in functional programming systems. In: ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, pp. 300–314 (1985)Google Scholar
  5. 5.
    Hudak, P., Bloss, A.: Avoiding copying in functional and logic programming languages. In: ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, pp. 300–314 (1985)Google Scholar
  6. 6.
    Odersky, M.: How to make destructive updates less destructive. In: ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, pp. 25–26 (1991)Google Scholar
  7. 7.
    Sastry, A.V.S.: Efficient Array Update Analysis of Strict Functional Languages. PhD thesis, Computer and Information Science, University of Oregon (1994)Google Scholar
  8. 8.
    Sastry, A.V.S., Clinger, W.D., Ariola, Z.: Order-of-evaluation analysis for destructive updates in strict functional languages with flat aggregates. In: Conference on Functional Programming Languages and Computer Architecture, pp. 266–275 (1993)Google Scholar
  9. 9.
    Shankar, N.: Static analysis for safe destructive updates in a functional language. In: International Workshop on Logic-based Program Synthesis and Transformation, pp. 1–24 (2002)Google Scholar
  10. 10.
    Shivers, O.: Control-Flow Analysis of Higher-Order Languages, or Taming Lambda. PhD thesis, School of Computer Science, Carnegie Mellon University, Pittsburgh, Pennsylvania, Technical Report CMU-CS-91-145 (1991)Google Scholar
  11. 11.
    Wadler, P.: Linear types can change the world! In: IFIP TC 2 Working Conference on Programming Concepts and Methods, pp. 347–359 (1990)Google Scholar
  12. 12.
    Wand, M., Clinger, W.D.: Set constraints for destructive array update optimization. Journal of Functional Programming 11(3), 319–346 (2001)MathSciNetCrossRefzbMATHGoogle Scholar
  13. 13.
    Williamson, G.B.: Flow analysis for higher-order multithreaded computations. PhD thesis, College of Computer and Information Science, Northeastern University, Boston, Massachusetts (2004)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2008

Authors and Affiliations

  • Christos Dimoulas
    • 1
  • Mitchell Wand
    • 1
  1. 1.College of Computer and Information ScienceNortheastern UniversityBoston

Personalised recommendations