Abstract
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.
- [Bac78] John Backus: "Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs", Communications of ACM, August 1978. Google ScholarDigital Library
- [Bac81a] John Backus: "Is Computer Science Based on the Wrong Fundamental Concept of 'Program'? An extended Concept", Algorithmic Languages, de Bakker/van Vliet(eds.), IFIP, North-Holland Publishing Company, 1981.Google Scholar
- [Bac81b] John Backus: "Function, Level Programs as Mathematical Objects", Proc. of the 1981 Conference on Functional Programming Languages and Computer Architecture, ACM 1981. Google ScholarDigital Library
- [Bau76] F. L. Bauer: "A Philosophy of Programming. Appendix: Variables considered harmful", Language Hierarchies and Interfaces, LNCS 46, Springer-Verlag, 1976.Google Scholar
- [BF88] Eike Best, César Fernández C.: Nonsequential Processes. A Petri Net View, Springer-Verlag, 1988.Google Scholar
- [BJM91] J. -P. Banâtre, S. B. Jones, D. Le Métayer: Prospects for Functional Programming in Software Engineering, ESPRIT Research Report, Springer-Verlag, 1991. Google ScholarDigital Library
- [Blo89] Adrienne Bloss: "Update Analysis and the Efficient Implementation of Functional Aggregates", Proceedings of the 1989 Conference on Functional Programming Languages and Computer Architecture, ACM 1989. Google ScholarDigital Library
- [BM93] George Becker, Neil V. Murray: A Structured Approach to Referentially Transparent Programming, TR 93-11, Dept. of Computer Science, SUNY Albany, 1993.Google Scholar
- [BM94] George Becker, Neil V. Murray: "Graph Models for Structured Functional Programming," Proc. of the 2-nd Massey Functional Programming Workshop, January 1994, New Zealand.Google Scholar
- [BRR89] J. W. de Bakker, W. -P. de Roever, G. Rozenberg: Linear Time, Branching Time and Partial Order in Logics and Models of Concurrency, LNCS 354, Springer-Verlag, 1989.Google Scholar
- [BS93] Erik Barendsen, Sjaak Smetsers: "Conventional and Uniqueness Typing in Graph Rewrite Systems", Proceedings of the 13-th Conference on Foundations of Software Technology and Theoretic Computer Science, LNCS 761, Springer-Verlag, 1993. Google ScholarDigital Library
- [Dar93] J. Darlington et al.: "Parallel Programming Using Skeleton Functions", Parallel Architectures and Languages Europe, LNCS 694, Springer-Verlag 1993. Google ScholarDigital Library
- [GH90] Juan C. Guzmán, Paul Hudak: "Single-threaded polymorphic lambda calculus", Proceedings of the 5th Annual Symposium on Logic in Computer Science, IEEE, June 1990.Google ScholarCross Ref
- [Gir87] Jean-Yves Girard: "Linear logic", Theoretical Computer Science, 50:1-102, 1987. Google ScholarDigital Library
- [Gun93] J. Gunawardena: "A Generalized Event Structure for the Muller Unfolding of a Safe Net", 4th International Conference on Concurrency Theory, LNCS 715, Springer-Verlag 1993. Google ScholarDigital Library
- [Jen92] Kurt Jensen: Coloured Petri Nets, Springer-Verlag, 1992.Google ScholarCross Ref
- [JR91] K. Jensen, G. Rozenberg: High-level Petri nets. Theory and applic., Springer-Verlag, 1991. Google ScholarDigital Library
- [Kel89] Paul Kelly: Functional Programming for Loosely-coupled Multiprocessors, Pitman, 1989.Google Scholar
- [Laf88] Yves Lafont: "The linear abstract machine", Theoretical Computer Science, 59, 1988. Google ScholarDigital Library
- [Lan66] Peter Landin: "The Next 700 Programming Languages", Comm. ACM, March 1966. Google ScholarDigital Library
- [Mull59] D. E. Muller, W. S. Bartky: "A theory of asynchronous circuits." In Proceedings of an International Symposium on the Theory of Switching. Harvard University Press, 1959.Google Scholar
- [Nag79] Manfred Nagl: Graph-Grammatiken: Theorie, Implementierung, Anwendungen, Vieweg, Braunschweig, 1979.Google Scholar
- [NPW81] Mogens Nielsen, Gordon Plotkin and Glynn Winskel: "Petri nets, event structures and domains, part I', Theoretical Computer Science, 13, 1981.Google Scholar
- [Ode91] Martin Odersky: "How to Make Destructive Updates Less Destructive", Symposium on Principles of Programming Languages, ACM 1991. Google ScholarDigital Library
- [Ode92] Martin Odersky: "Observers for Linear Types", Proceedings of the fourth European Symposium on Programming, LNCS 582, Springer-Verlag 1992. Google ScholarDigital Library
- [PE93] Rinus Plasmeijer, Marko van Eekelen: Functional Programming and Parallel Graph Rewriting, Addison-Wesley, 1993. Google ScholarDigital Library
- [Pet62] Carl A. Petri: Kommunication mit Automaten, PhD thesis, Univ. Bonn, 1962.Google Scholar
- [Pet77] Carl A. Patri: Non-sequential processes, Technical Report GMD-ISF-77-5, Gessellschaft Math. Dataverarb., St. Augustin, 1977.Google Scholar
- [Pra86] Vaugham Pratt: "Modeling Concurrency with Partial Orders", International Journal of Parallel Programming, Vol. 15, No. 1, 1986 Plenum Publishing Corporation, 1986. Google ScholarDigital Library
- [Qui60] Willard Van Orman Quine: Word and Object, MIT Press, 1960.Google Scholar
- [Rei85] Wolfgang Reisig: Petri Nets. An Introduction, Springer-Verlag, 1985. Google ScholarDigital Library
- [Sch85] David A. Schmidt: "Detecting global variables in denotational specifications", ACM Transactions on Programming Languages and Systems, 7(2), April 1985. Google ScholarDigital Library
- [Wad91] Philip Wadler: "Is there a use for linear logic?", Proceedings of the ACM Symposium on Partial Evaluation and Semantics-Based Program Manipulation, ACM, June. 1991. Google ScholarDigital Library
- [Wad90] Philip Wadler: "Linear types can change the world!", Proceedings of the IFIP TC2 Working Conference on Programming Concepts and Methods, Elsevier Science Publishers B.V.(North-Holland), April 1990.Google Scholar
Index Terms
- Efficient execution of programs with static semantics
Recommendations
PMAF: an algebraic framework for static analysis of probabilistic programs
PLDI '18Automatically establishing that a probabilistic program satisfies some property ϕ is a challenging problem. While a sampling-based approach—which involves running the program repeatedly—can suggest that ϕ holds, to establish that the program satisfies ϕ,...
PMAF: an algebraic framework for static analysis of probabilistic programs
PLDI 2018: Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and ImplementationAutomatically establishing that a probabilistic program satisfies some property ϕ is a challenging problem. While a sampling-based approach—which involves running the program repeatedly—can suggest that ϕ holds, to establish that the program satisfies ϕ,...
Comments