Abstract
This paper introduces Temporal Constraint Functional Programming (TCFP), a declarative paradigm suitable for concurrent programming. The paper defines an example TCFP language, a method for specifying the semantics of TCFP languages, and the basis of a transformation methodology for TCFP programs. The main advantages of TCFP are:
-
Functional programs are free of control flow, allowing process bodies to be programmed without explicit reference to time or sequencing;
-
Through temporal constraints, I/O, communication and time are explicitly recognized in a declarative way, and are formalized as a natural extension to the semantics of the underlying functional language;
-
The temporal logic provides a natural abstraction for global and persistent state, long a problem in functional programming in the large;
-
The framework gives support for transformation of concurrent programs, the correctness of which can be demonstrated via proofs in temporal logic.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
F. Warren Burton. Non-determinism with referential transparency in functional programming languages. The Computer Journal, 31 (3): 243–247, 1988.
Roland Dietrich, Birgit Heinz, and Hendrik C.R. Lock. Guarded functional programming and lazy streams. ESPRIT Basic Research Action 3147, the Phoenix project, Deliverable B. 2. 2 (ii), 1991.
Roland Dietrich and Hendrik C.R. Lock. Exploiting Non-Determinism through Laziness in Guarded Functional Languages. In TAPSOFT, 1991.
Dov Gabbay. The declarative past and imperative future. In Temporal Logic in Specification, volume LNCS 398, pages 409–448. Springer Verlag, 1987.
Andrew Gordon. PFL-i-: A kernel scheme for functional I/O. Technical report, University of Cambridge Computer Laboratory, March 1989.
T.C. Nicholas Graham. Temporal constraint functional programming: A semantic framework. ESPRIT Basic Research Action 3147, the Phoenix project, Deliverable B6. 1, 1991.
C.A.R. Hoare. Communicating Sequential Processes. Prentice-Hall, London, 1985.
Paul Hudak, Philip Wadler, Arvind, Brian Boutel, Jon Fairburn, Joe Fasel, John Hughes, Thomas Johnsson, Dick Kieburtz, Simon Peyton Jones, Rishiyur Nikhil, Mike Reeve, David Wise, and Jonathon Young. Report on the functional programming language Haskell. Technical report, Yale University, December 1988.
Kent Karlsson. Nebula — a functional operating system. Technical report, Chalmers University, 1981.
Hendrik C.R. Lock. An amalgamation of functional and logic programming languages. Technical Report 408, GMD, September 1989.
Hendrik C.R. Lock and Stefan Jânichen. Linda meets functional programming. In Proceedings of the Second IEEE Workshop of Future Trends of Distributed Computing Systems, 1990.
R. Milner, J. Parrow, and D. Walker. A calculus of mobile processes. Technical Report ECS-LFCS-89–85, Laboratory for Foundations of Computer Science, University of Edinburgh, 1989.
Robin Milner. The Standard ML Core Language. Polymorphism, 2 (2): 1–28, October 1985.
Robin Milner. Communication and Concurrency. Prentice-Hall, Hemel Hempstead, 1986.
Ross Paterson. Non-deterministic a-calculus: a core for integrated languages. Technical Report IC/FPG/Phoenix/7, Imperial College, University of London, January 1991.
Nigel Perry. I/O and inter-language calling for functional languages. In Proceedings of the Ninth International Conference of the Chilean Computer Science Society and Fifteenth Latin American Conference on Informatics, July 1989.
Robert W. Scheifler and Jim Gettys. The X window system. ACM Transactions on Graphics, 5 (2): 79–109, 1986.
David A. Schmidt. Denotational Semantics: A Methodology for Language Development. Wm. C. Brown Publishers, Dubuque, Iowa, 1986.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1992 Springer-Verlag London
About this paper
Cite this paper
Graham, T.C.N. (1992). Temporal Constraint Functional Programming: A Declarative Framework for Concurrency and Interaction. In: Darlington, J., Dietrich, R. (eds) Declarative Programming, Sasbachwalden 1991. Workshops in Computing. Springer, London. https://doi.org/10.1007/978-1-4471-3794-8_6
Download citation
DOI: https://doi.org/10.1007/978-1-4471-3794-8_6
Publisher Name: Springer, London
Print ISBN: 978-3-540-19735-5
Online ISBN: 978-1-4471-3794-8
eBook Packages: Springer Book Archive