Experiments with destructive updates in a lazy functional language (extended abstract)

The aggregate update problem has received considerable attention since pure functional programming languages were recognised as an interesting research topic. There is extensive literature in this area, which comprises over 100 papers. We have tried to apply some of the proposed solutions to our own applications to see how these solutions work in practice. We have been able to use destructive updates but are not convinced that this could have been achieved without application specific knowledge. In particular, no form of update analysis has been reported that is applicable to non-flat domains in polymorphic languages with higher order functions.

[1]  Simon L. Peyton Jones,et al.  Report on the programming language Haskell: a non-strict, purely functional language version 1.2 , 1992, SIGP.

[2]  Philip Wadler A new array operation , 1986, Graph Reduction.

[3]  Marko C. J. D. van Eekelen,et al.  Guaranteeing Safe Destructive Updates Through a Type System with Uniqueness Information for Graphs , 1993, Dagstuhl Seminar on Graph Transformations in Computer Science.

[4]  Simon L. Peyton Jones,et al.  A short cut to deforestation , 1993, FPCA '93.

[5]  Hugh Glaser,et al.  On the benefits of different analyses in the compilation of functional languages , 1991 .

[6]  David A. Schmidt Detecting global variables in denotational specifications , 1985, TOPL.

[7]  Thomas Johnsson,et al.  The Chalmers Lazy-ML Compiler , 1989, Computer/law journal.

[8]  Simon L. Peyton Jones,et al.  Imperative functional programming , 1993, POPL '93.

[9]  Marvin V. Zelkowitz,et al.  Programming Languages: Design and Implementation , 1975 .

[10]  W. Press,et al.  Numerical Recipes: The Art of Scientific Computing , 1987 .

[11]  Paul Hudak,et al.  Arrays, non-determinism, side-effects, and parallelism: A functional perspective , 1987, Graph Reduction.

[12]  Adrienne G. Bloss Update analysis and the efficient implementation of functional aggregates , 1989, FPCA.

[13]  Kevin Hammond,et al.  Spiking Your Caches , 1993, Functional Programming.

[14]  Willem G. Vree,et al.  Arrays in a lazy functional language -- a case study: the fast Fourier transform , 1992 .

[15]  Pieter H. Hartel,et al.  Compilation of functional languages using flow graph analysis , 1994, Softw. Pract. Exp..

[16]  Paul Hudak A semantic model of reference counting and its abstraction (detailed summary) , 1986, LFP '86.

[17]  Willem G. Vree,et al.  Experiments wiht Destructive Updates in a Lazy Functional Language , 1994, Comput. Lang..

[18]  Carl McCrosky,et al.  Falafel: Arrays in a Functional Language , 1991 .

[19]  Paul Hudak,et al.  Conception, evolution, and application of functional programming languages , 1989, CSUR.

[20]  Paul Hudak,et al.  Compilation of Haskell array comprehensions for scientific computing , 1990, PLDI '90.