Abstract
Facile is a symmetric integration of concurrent and functional programming. The language supports both function and process abstraction. Functions may be defined and used within processes, and processes can be dynamically created during expression evaluation. In this work we present two different descriptions of the operational semantics of Facile. First, we develop a structural operational semantics for a small core subset of Facile using a labeled transition system. Such a semantics is useful for reasoning about the operational behavior of Facile programs. We then provide an abstract model of implementation for Facile: theConcurrent and Functional Abstract Machine (C-FAM). The C-FAM executes concurrent processes evaluating functional expressions. The implementation semantics includes compilation rules from Facile to C-FAM instructions and execution rules for the abstract machine. This level of semantic description is suitable for those interested in implementations.
Similar content being viewed by others
References
R. Milner,A Calculus of Communicating Systems, Volume 92 ofLecture Notes in Computer Science, Springer-Verlag (1980).
C. Hoare, Communicating Sequential Processes,Communications of the ACM,21(8):666–677 (August 1978).
occam Programming Manual, (1984). Prentice-Hall Series in Computer Science, C.A.R. Hoare (Series Editor).
R. Milner,A proposal for Standard ML, Internal Report CSR-157-83, University of Edinburgh (1984).
The Revised3 Report on the Algorithmic Language Scheme, AI Memo 848a, MIT (1986): Also inSIGPLAN Notices,21(12):37–79 (December 1986).
J. 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).
B. Cohen, W. Harwood, and M. Jackson,The Specification of Complex Systems, Addison-Wesley (1986).
D. Bjørner and C. B. Jones,The Vienna Development Method: The Meta-Language, Volume 61 ofLecture Notes in Computer Science, Springer-Verlag (1978).
R. Milner, Calculi for Synchrony and Asynchrony,Theoretical Computer Science,25:269–310 (1983).
S. Brookes, C. Hoare, and A. Roscoe, A Theory of Communicating Sequential Processes,J. of the ACM,31(3):560–599 (July 1984).
M. Hennessy,Algebraic Theory of Processes, MIT Press (1988).
C. Hoare,Communicating Sequential Processes, Series in Computer Science, Prentice-Hall (1985).
G. Plotkin, An Operational Semantics for CSP, In D. Bjørner (ed.),Formal Description of Programming Language Concepts II, pp. 199–223, North-Holland, Amsterdam (1983).
P. Degano, R. de Nicola, and U. Montanari, A Distributed Operational Semantics for CCS based on Condition/Event Systems,Acta Informatica 26:59–91 (1988).
G. Plotkin,A Structural Approach to Operational Semantics, Technical Report DAIMI FN-19, Aarhus University (September 1981).
P. Landin, The Mechanical Evaluation of Expressions,Computer Journal,6(4):308–320 (1964).
L. Cardelli, Amber. In Cousineau, Curien, and Robinet (eds.)LNCS 242: Combinators and Functional Programming Languages, pp. 21–47, Springer-Verlag (1986).
L. Cardelli, The Functional Abstract Machine, Technical Report TR-107, Bell Labs (1983).
J. M. Lucassen and D. K. Gifford, Polymorphic Effect Systems, InConf. Record of the Fifteenth Annual ACM Symp. on Principle of Programming Languages, pp. 47–57 (January 1988).
S. Holmström,PFL: A Functional Language for Parallel Programming, and Its Implementation, Programming Methodoly Group 7, University of Göteborg and Chalmers University of Technology (September 1983).
M. Felleisen, The Theory and Practice of First-Class Prompts, InConf. Record of the Fifteenth Annual ACM Symp. on Principle of Programming Languages, pp. 180–190 (January 1988).
B. Thomsen, A Calculus of Higher Order Communicating Systems, InConf. Record of the Sisteenth Annual ACM Symp. on Principle of Programming Languages, pp. 143–154 (January 1989).
A. Giacalone, P. Mishra, and S. Prasad, FACILE: A Symmetric Integration of Concurrent and Functional Programming, In J. Diaz and F. Orejas (eds.),LNCS 352: TAPSOFT '89, pp. 184–209, Springer-Verlag, Berlin (March 1989).
P. Henderson,Functional Programming: Application and Implementation, Prentice Hall International, London (1980).
G. Plotkin, Call by name, call by value, and the λ calculus,Theoretical Computer Science,1:125–159 (1975).
A. Giacalone, P. Mishra, and S. Prasad,Operational and Algebraic Semantics of Facile, (June 1989) (Manuscript in preparation).
Ada Reference Manual, In Ellis Horowitz (ed.), “Programming Languages: A Grand Tour” (1983).
CHILL Language Definition: CCITT Recommendation Z.200, Volume 5, Number 1, (January 1985).
N. Wirth,Programming in MODULA-2. Texts and Monographs in Computer Science, Springer-Verlag, second, corrected edition (1982).
A. Burns, A. M. Lister, and A. J. Wellings,A Review of Ada Tasking, Volume 262 ofLecture Notes in Computer Science, Springer-Verlag, Berlin (1987).
J. A. Bergstra and J. W. Klop, Process Algebra for Synchronous Communication,Information and Control,60: 109–137 (1984).
G. Berry and L. Cosserat, The ESTEREL Synchronous Programming Language and its Mathematical Semantics. InLNCS 197: Proc. of the Seminar on Concurrency, pp. 389–448, Springer-Verlag, Berlin (1985).
G. Boudol and D. Austry, Algebre de Processus et Synchronization.Theoretical Computer Science 30:91–131 (1984).
R. Milner, Lectures on a Calculus for Communicating Systems, InLNCS 197: Proc. of the Seminar on Concurrency, pp. 197–220, Springer-Verlag, Berlin (1985).
U. Engberg and M. Nielsen,A Calculus of Communicating Systems with Label Passing, Technical Report DAIMI PB-208, Aarhus University Computer Science Department (1986).
E. Astesiano and E. Zucca, Parametric Channels in CCS and Their Applications, InProc. of the 2nd Conf. on Foundations of Software Tech. and Theoret. Computer Sci. (December 1982).
E. Astesiano and G. Reggio, SMoLCS-Driven Concurrent Calculi, InLNCS 249: TAPSOFT '87 pp. 169–201, Springer-Verlag, Berlin (1987).
Arvind and D. Culler,Data Flow Architectures, In Traub, Grosz, Lampson, and Nilsson (eds.),Annual Review of Computer Science,1:225–253, Annual Reviews Inc., Palo Alto, California, USA (1986).
P. Hudak and S. Anderson, Pomset Interpretations of Parallel Functional Programs, In G. Kahn, (ed.),LNCS 274: Functional Programming Languages and Computer Architecture, pp. 234–256, Springer-Verlag, Berlin (1987).
P. Hudak and L. Smith, Para-Functional Programming: A Paradigm for Programming Multiprocessor Systems, InConf. Record of the Thirteenth Annual ACM Symp. on Principle of Programming Languages, pp. 243–254 (January 1986).
G. Kahn, The Semantics of a Simple Language for Parallel Programming, InProc. of the IFIP Conference, pp. 471–475 (1974).
G. Kahn and D. MacQueen,Coroutines and Networks of Parallel Processes, IRIA Report 202 (November 1976).
R. Keller, Denotational Semantics for Parallel Programs with Indeterminate Operators, In E. Neuhold (ed.),Formal Descriptions of Programming Concepts, pp. 337–366, North-Holland (1978).
P. Henderson, Purely Functional Operating Systems, In Darlington, Henderson, and Turner (eds.),Functional Programming and Its applications, pp. 177–192, Cambridge University Press (1982).
J. Morris and P. Henderson, A Lazy Evaluator, InProc. of the Third ACM Conf. on Principles of Programming Languages (January 1976).
D. Friedman and D. Wise, CONS should not evaluate its arguments, inThird Intl. Colloquium on Automata, Languages and Programming, Edinburgh University Press (1976).
R. Keller, Some Theoretical Aspects of Applicative Multiprocessing, InLNCS 88: Mathematical Foundations of Computer Science, pp. 58–74, Springer-Verlag, Berlin (1980).
R. B. Kieburtz, Marigold: A Functional Flow-Graph Language, Technical Report OGC TR CS/E 83-005, Oregon Graduate Center, 19600 N. W. Walker Road, Beaveaverton, Oregon 97006 (1983)
D. Turner, Functional Programming and Communicating Processes, In de Bakker, Nijman, and Treleaven (eds.),LNCS 259: PARLE Parallel Architectures and Languages Europe, pp. 54–74, Springer-Verlag, Berlin (June 1987).
W. Stoye,The Implementation of Functional Languages using Custom Hardware, PhD thesis, Cambridge University Computer Laboratory (1985).
R. P. Gabriel and J. McCarthy, Queue-based Multi-processing Lisp, InConference Record of the 1984 ACM Symp. on LISP and Functional Programming, pp. 25–44 (1984).
R. H. Halstead, Multilisp: A Language for Concurrent Symbolic Computation,ACM Transactions on Programming Languages and Systems,7(4):501–538, (October 1985).
G. L. Steele and W. D. Hillis, Connection Machine LISP: Fine Grained Parallel Symbolic Processing, InConf. Record of the 1986 ACM Symp. on LISP and Functional Programming, pp. 279–297 (August 1986).
D. Gelernter and T. London, The Parallel World of Symmetric Lisp, Technical Report, Yale University, New Haven (February 1985).
D. Gelernter, S. Jagannathan, and T. London, Environments as First Class Objects, InProc. of the Fourteenth Annual ACM Conf. on Principles of Programming Languages, pp. 98–110 (January 1987).
N. Carriero, D. Gelernter, and J. Leichter, Distributed Data Structures in Linda, InConf. Record of the Thirteenth Annual ACM Symp. on Principles of Programming Languages, pp. 236–242 (January 1986).
J. R. Larus and P. N. Hilfinger, Restructuring Lisp Programs for Concurrent Execution, InProc. of the ACM/SIGPLAN PPEALS 1988, pp. 100–110 (July 1988).
J. R. Kennaway and M. R. Sleep, Expression as Processes, InConference Record of the 1982 ACM Symposium on LISP and Functional Programming, pp. 21–28 (August 1982).
G. Boudol, Towards a Lambda-Calculus for Concurrent and Communicating Systems, In J. Diaz and F. Orejas (eds.),LNCS 351: TAPSOFT '89, pp. 149–161, Springer-Verlag, Berlin (March 1989).
S. Meira, Processes and Functions. In J. Diaz and F. Orejas (eds.),LNCS 352: TAPSOFT '89, pp. 286–297, Springer-Verlag, Berlin (March 1989).
T. Bolognesi and E. Brinksma, Intro. to the ISO Spec. Language LOTOS, InComputer Networks and ISDN Systems 14, pp. 25–59, North-Holland, Amsterdam (1987).
J. Reppy, Synchronous Operations as First-class Values, InProc. of the SIGPLAN Conf. on Programming Language Design and Implementation, pp. 250–259 (June 1988).
F. Nielson, The Typed λ-Calculus with First-Class Processes, (June, 198) (To appear in PARLE '89).
S. Abramsky and R. Sykes, Secd-m: a Virtual Machine for Applicative Programming, In J. Jouannaud (ed.),LNCS 201: Functional Programming Languages and Computer Architecture, pp. 81–98. Springer-Verlag, Berlin (September 1985).
L. Cardelli, The Amber Machine. In Cousineau, Curien, and Robinet, (eds.),LNCS 242: Combinators and Functional Programming Languages, pp. 48–70, Springer-Verlag (1986).
G. Cousineau, P. L. Curien, and M. Mauny, The Categorical Abstract Machine, InProc. of the IFIP Conf. on Functional Programming Languages and Computer Architecture, pp. 50–64, (September 1985).
D. Bjørner, and O. Oest, (eds.),LNCS 98: Towards a Formal Description of Ada, Springer-Verlag, Berlin (1980).
A. Giacalone, A Concurrent Abstract Machine and an Interactive Environment for Simulating Concurrent Systems, Technical Report TR 87/13, Department of Computer Science, SUNY at Stony Brook (December 1987).
A. Giacalone and S. A. Smolka, Integrated Environments for Formally Well-Founded Design and Simulation of Concurrent Systems: A Non-Procedural Approach,IEEE Transactions on Software Engineering,14(6):787–802 (June 1988).
L. Cardelli, An Implementation Model of Rendezvous Communication, InLNCS 197: Proc. of the Seminar on Concurrency, pp. 449–457, Springer-Verlag, Berlin (1985).
P. America, J. de Bakker, J. N. Kok, and J. Rutten, Operational Semantics of a Parallel Object Oriented Language, InConference Record of the Thirteenth Annual ACM Symp. on Principles of Programming Languages, pp. 194–208, (January 1986).
R. de Nicola and M. Hennessy,CCS without τ's, InLNCS 249: TAPSOFT '87, pp. 138–152, Springer-Verlag, Berlin (1987).
T. Chen,Facile: A User's and Implementor's Guide, (1989). (To appear as a Technical Report of the Department of Computer Science, SUNY at Stony Brook, New York 11794.)
Author information
Authors and Affiliations
Additional information
This work has been partially supported by NSF CCR-8704309 and NSF CCR-8706973.
Rights and permissions
About this article
Cite this article
Giacalone, A., Mishra, P. & Prasad, S. Facile: A symmetric integration of concurrent and functional programming. Int J Parallel Prog 18, 121–160 (1989). https://doi.org/10.1007/BF01491213
Received:
Revised:
Issue Date:
DOI: https://doi.org/10.1007/BF01491213