|
ABSTRACT
The array update problem in the implementation of a purely functional language is the following: once an array is updated, both the original array and the newly updated one must be preserved to maintain referential transparency. Previous approaches have mainly based on the detection or enforcement of single-threaded accesses to an aggregate, by means of compiler-time analyses or language restrictions. These approaches cannot deal with aggregates which are updated in a multi-threaded manner.Baker's shallow binding scheme can be used to implement multi-threaded functional arrays. His scheme, however, can be very expensive if there are repeated alternations between long binding paths. We design a scheme that fragments binding paths randomly. The randomization scheme is on-line, simple to implement, and its expected performance comparable to that of the optimal off-line solutions. All this is achieved without using compiler-time analyses, and without restricting the languages.The expected performance of the randomization scheme is analyzed in details, and some preliminary results are shown. Applications of the randomization technique to other functional aggregates, as well as its implications, are briefly outlined.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
|
 |
2
|
|
| |
3
|
|
| |
4
|
Lennaxt Augustsson and Thomas Johnsson. Lazy ML user's manual Version 0.999.J, July 1994. Draft, distributed with the Chalmers Lazy ML compiler.
|
 |
5
|
|
 |
6
|
|
 |
7
|
|
| |
8
|
|
 |
9
|
Tyng-Ruey Chuang , Benjamin Goldberg, Real-time deques, multihead Turing machines, and purely functional programming, Proceedings of the conference on Functional programming languages and computer architecture, p.289-298, June 09-11, 1993, Copenhagen, Denmark
[doi> 10.1145/165180.165225]
|
| |
10
|
|
| |
11
|
Robert Hood and Robert Melville. Real-time queue operations in pure Lisp. Information Processing Letters, 13(2):50- 53, 1981.
|
 |
12
|
|
| |
13
|
Thomas Johnsson. Personal communication, October 1993.
|
| |
14
|
Herbert Kuchen. Personal communication, September 1993.
|
 |
15
|
|
 |
16
|
|
 |
17
|
|
| |
18
|
Colin Runciman and David Wakeling. Heap profiling of lazy functional programs. Journal of Functional Programming, 3(2):217-245, April 1993.
|
| |
19
|
|
 |
20
|
|
 |
21
|
|
| |
22
|
Berry Schoenmakers. Data Structures and Amortized Complexity in a Functional Setting. Phi) thesis, Deaprtment of Mathematics and Computing Science, Eindhoven University of Tectmology, September 1992.
|
 |
23
|
|
|