Detecting global variables in denotational specifications
ACM Transactions on Programming Languages and Systems (TOPLAS) - Lecture notes in computer science Vol. 174
Petri nets: an introduction
Modeling concurrency with partial orders
International Journal of Parallel Programming
Theoretical Computer Science
Theoretical Computer Science - International Joint Conference on Theory and Practice of Software Development, P
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
Prospects for functional programming in software engineering
Prospects for functional programming in software engineering
Is there a use for linear logic?
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
High-level Petri nets: theory and application
High-level Petri nets: theory and application
ESOP'92 Symposium proceedings on 4th European symposium on programming
Communications of the ACM
The next 700 programming languages
Communications of the ACM
Functional Programming and Parallel Graph Rewriting
Functional Programming and Parallel Graph Rewriting
Parallel Programming Using Skeleton Functions
PARLE '93 Proceedings of the 5th International PARLE Conference on Parallel Architectures and Languages Europe
A Generalized Event Structure for the Muller Unfolding of a Safe Net
CONCUR '93 Proceedings of the 4th International Conference on Concurrency Theory
Conventional and Uniqueness Typing in Graph Rewrite Systems
Proceedings of the 13th Conference on Foundations of Software Technology and Theoretical Computer Science
Function level programs as mathematical objects
FPCA '81 Proceedings of the 1981 conference on Functional programming languages and computer architecture
Hi-index | 0.00 |
An extension to single-threading (using each value exactly once) is presented that allows efficient execution of functional programs while maintaining their static semantics. This extension preserves the idea of only one, possibly modifying, use of a data item, and also allows any number of read-only uses. The inefficiency problem is overcome by imposing a restriction on function composition. The proposed method is based upon a static analysis of function definitions and calls. This analysis is linear in the size of function definitions, and additive between functions. Unlike approaches utilized in optimizing compilers, the proposed method can be applied even to large programs, and it guarantees the asymptotic complexity of corresponding imperative programs while obviating the need for garbage collection. An experimental functional programming language based on these ideas has been designed and implemented.