Detecting global variables in denotational specifications
ACM Transactions on Programming Languages and Systems (TOPLAS) - Lecture notes in computer science Vol. 174
The Computer Journal - Special issue on Lazy functional programming
Making data structures persistent
Journal of Computer and System Sciences - 18th Annual ACM Symposium on Theory of Computing (STOC), May 28-30, 1986
I-structures: data structures for parallel computing
ACM Transactions on Programming Languages and Systems (TOPLAS)
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Update analysis and the efficient implementation of functional aggregates
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
How to make destructive updates less destructive
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Shallow binding makes functional arrays fast
ACM SIGPLAN Notices
Fully persistent arrays for efficient incremental updates and voluminous reads
ESOP'92 Symposium proceedings on 4th European symposium on programming
Imperative functional programming
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Real-time deques, multihead Turing machines, and purely functional programming
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
The aggregate update problem in functional programming systems
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Communications of the ACM
Efficient applicative data types
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Persistent data structures
Purely functional random-access lists
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
A probabilistic approach to the problem of automatic selection of data representations
Proceedings of the first ACM SIGPLAN international conference on Functional programming
A new method for functional arrays
Journal of Functional Programming
Hi-index | 0.00 |
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.