On Fri, 19 Feb 1999 08:33:13 -0800
Simon Marlow <[EMAIL PROTECTED]> wrote:
> There's a well-known trick the compiler can play to make (//) work in
> constant time: namely instead of copying the array you perform the update
> descructively, but ensure that any references to the old array are
> indirected through a filter that returns the old values for any updated
> slots.  In the common case where the array is used single-threadedly, the
> filter will be garbage collected.  I believe hbc uses this idea.

Just some noise. :) My boss has some papers on relevant topic:

.A randomized implementation of multiple functional arrays,
Tyng-Ruey Chuang
In Proceedings of the 1994 ACM Conference on Lisp and Functional Programming, 
pages 173-184. Orlando, Florida, USA, June 1994.
http://www.iis.sinica.edu.tw/~trc/lfp94.ps

Fully persistent arrays for efficient incremental updates and voluminous reads,
Tyng-Ruey Chuang.
In Bernd Krieg-Brueckner, editor, 4th European Symposium on Programming, 
pages 110-129. Rennes, France, February 1992. Lecture Notes in Computer
Science, Volume 582. Springer-Verlag. 

sincerely,
Shin-Cheng Mu

Reply via email to