Abstract
FACILE is a language which symmetrically integrates concurrent and functional programming. It is a typed and statically scoped language. The language supports both function and process abstractions. Recursive functions may be defined and used within processes, and processes can be dynamically created during expression evaluation. Inter-process communication is by hand-shaking on typed channels. Typed channels, functions and process scripts are first-class values.
In this paper, we present the “core” syntax of FACILE. We then describe an abstract machine C-FAM which executes concurrent processes evaluating functional style expressions. The operational definition of FACILE is presented by giving compilation rules from FACILE to C-FAM instructions, and execution rules for the abstract machine. An overview of the FACILE environment is also discussed.
This work has been partially supported by NSF CCR-8704309 and NSF CCR-8706973
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
ADA Reference Manual. 1983. In Ellis Horowitz, “Programming Languages: A Grand Tour”.
Egidio Astesiano and Gianna Regio. SMoLCS-Driven Concurrent Calculi. In LNCS 249: TAPSOFT '87, pages 169–201, Springer-Verlag, Berlin, 1987.
S. Abramsky and R. Sykes. Secd-m: a Virtual Machine for Applicative Programming. In Jean-Pierre Jouannaud, editor, LNCS 201: Functional Programming Languages and Computer Architecture, pages 81–98, Springer-Verlag, Berlin, September 1985.
John Backus. Can Programming Be Liberated from the von Neumann Style ? A Functional Style and Its Algebra of Programs. Communications of the ACM, 21(8):613–641, August 1978.
S.D. Brookes, C.A.R. Hoare, and A.W. Roscoe. A Theory of Communicating Sequential Processes. Journal of the ACM, 31(3):560–599, July 1984.
D. Bjorner and O.N. Oest, editors. LNCS 98: Towards a Formal Description of ADA. Lecture Notes in Computer Science, Springer-Verlag, Berlin, 1980.
Luca Cardelli. The Functional Abstract Machine. Technical Report Technical Report TR-107, Bell Labs, 1983.
Luca Cardelli. An Implementation Model of Rendezvous Communication. In LNCS 197: Proceedings of the Seminar on Concurrency, pages 449–457, Springer-Verlag, Berlin, 1985.
Luca Cardelli. Amber. In Cousineau, Curien, and Robinet, editors, LNCS 242: Combinators and Functional Programming Languages, pages 21–47, Springer-Verlag, 1986.
Luca Cardelli. The Amber Machine. In Cousineau, Curien, and Robinet, editors, LNCS 242: Combinators and Functional Programming Languages, pages 48–70, Springer-Verlag, 1986.
G. Cousineau, P. L. Curien, and M. Mauny. The Categorical Abstract Machine. In Proceedings of the IFIP Conference on Functional Programming Languages and Computer Architecture, IFIP, September 1985.
CHILL Language Definition: CCITT Recommendation Z. 200. volume 5 number 1 edition, January 1985.
Alessandro Giacalone. A Concurrent Abstract Machine and an Interactive Environment for Simulating Concurrent Systems. Technical Report TR 87/13, Dept. of Computer Science, SUNY at Stony Brook, December 1987.
Alessandro Giacalone and Scott A. Smolka. Integrated Environments for Formally Well-Founded Design and Simulation of Concurrent Systems: A Non-Procedural Approach. IEEE Transactions on Software Engineering, June 1988.
Peter Henderson. Functional Programming: Application and Implementation. Prentice Hall International, London, 1980.
Peter Henderson. Purely Functional Operating Systems. In Darlington, Henderson, and Turner, editors, Functional Programming and its applications, pages 177–192, Cambridge University Press, 1982.
Matthew Hennessy. Algebraic Theory of Processes. MIT Press, 1988.
C.A.R. Hoare. Communicating Sequential Processes. Series in Computer Science, Prentice-Hall, 1985.
occam Programming Manual. 1984. Prentice-Hall International Series in Computer Science, C.A.R. Hoare (Series Editor).
Gilles Kahn. The Semantics of a Simple Language for Parallel Programming. In Proceedings of the IFIP Conference, pages 471–475, IFIP, 1974.
Robert Keller. Denotational Semantics for Parallel Programs with Indeterminate Operators. In E.J. Neuhold, editor, Formal Descriptions of Programming Concepts, pages 337–366, North-Holland Publishing Company, 1978.
Gilles Kahn and David MacQueen. Coroutines and Networks of Parallel Processes. IRIA Report 202, IRIA, November 1976.
J. R. Kennaway and M. R. Sleep. Expressions as Processes. In Conference Record of the 1982 ACM Symposium on LISP and Functional Programming, pages 21–28, ACM, August 1982.
P.J. Landin. The Mechanical Evaluation of Expressions. Computer Journal, 6(4):308–320, 1964.
Robin Milner. A Calculus of Communicating Systems. Volume 92 of Lecture Notes in Computer Science, Springer-Verlag, 1980.
Robin Milner. A proposal for Standard ML. Internal Report CSR-157-83, University of Edinburgh, 1984.
Flemming Nielson. The Typed λ-Calculus with First-Class Processes. June 1988. Extended Abstract.
G.D. Plotkin. A Structural Approach to Operational Semantics. Technical Report DAIMI FN-19, Aarhus University, September 1981.
G.D. Plotkin. An Operational Semantics for CSP. Technical Report CSR-114-82, University of Edinburgh, May 1982.
J.H. Reppy. Synchronous Operations as First-class Values. In Proceedings of the SIGPLAN Conference on Programming Language Design and Implementation, pages 250–259, ACM SIGPLAN, June 1988.
Scott A. Smolka and Robert E. Strom. A CCS semantics for NIL. IBM Journal of Research and Development, 31(5):556–570, September 1987.
William Clinger et al. The Revised Revised Report on Scheme, or An UnCommon Lisp. AI Memo 848, MIT, Aug 1985.
Niklaus Wirth. Programming in MODULA-2. Texts and Monographs in Computer Science, Springer-Verlag, second, corrected edition, 1982.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1989 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Giacalone, A., Mishra, P., Prasad, S. (1989). FACILE: A symmetric integration of concurrent and functional programming. In: Díaz, J., Orejas, F. (eds) TAPSOFT '89. TAPSOFT 1989. Lecture Notes in Computer Science, vol 352. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-50940-2_36
Download citation
DOI: https://doi.org/10.1007/3-540-50940-2_36
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-50940-0
Online ISBN: 978-3-540-46118-0
eBook Packages: Springer Book Archive