Experiments wiht Destructive Updates in a Lazy Functional Language

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 proposes a wide variety of solutions. 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. It is our belief that a refinement of the monolithic approach towards constructing arrays may be a good alternative to using the incremental approach with destructive updates.

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

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

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

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

[5]  Philip Wadler The Concatenate Vanishes , 1987 .

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

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

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

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

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

[11]  Simon L. Peyton Jones,et al.  Unboxed Values as First Class Citizens in a Non-Strict Functional Language , 1991, FPCA.

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

[13]  J. Tukey,et al.  An algorithm for the machine calculation of complex Fourier series , 1965 .

[14]  Simon L. Peyton Jones,et al.  The Implementation of Functional Programming Languages , 1987 .

[15]  Hendrik Pieter Barendregt,et al.  Functional Programming and the Language TALE , 1986, Current Trends in Concurrency.

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

[17]  William H. Press,et al.  Numerical recipes in C. The art of scientific computing , 1987 .

[18]  van der,et al.  Finite difference methods for solving partial differential equations , 1968 .

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

[20]  John Feo,et al.  Arrays in Sisal , 1991 .

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

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

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

[24]  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.

[25]  William H. Press,et al.  Numerical Recipes: The Art of Scientific Computing , 1987 .

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

[27]  Arnold W. Heemink Storm surge prediction using Kalman filtering , 1986 .

[28]  Uday S. Reddy,et al.  Imperative functional programming , 1996, CSUR.