Skip to main content
Log in

Facile: A symmetric integration of concurrent and functional programming

  • Published:
International Journal of Parallel Programming Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. R. Milner,A Calculus of Communicating Systems, Volume 92 ofLecture Notes in Computer Science, Springer-Verlag (1980).

  2. C. Hoare, Communicating Sequential Processes,Communications of the ACM,21(8):666–677 (August 1978).

    Google Scholar 

  3. occam Programming Manual, (1984). Prentice-Hall Series in Computer Science, C.A.R. Hoare (Series Editor).

  4. R. Milner,A proposal for Standard ML, Internal Report CSR-157-83, University of Edinburgh (1984).

  5. The Revised3 Report on the Algorithmic Language Scheme, AI Memo 848a, MIT (1986): Also inSIGPLAN Notices,21(12):37–79 (December 1986).

    Google Scholar 

  6. 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).

    Google Scholar 

  7. B. Cohen, W. Harwood, and M. Jackson,The Specification of Complex Systems, Addison-Wesley (1986).

  8. D. Bjørner and C. B. Jones,The Vienna Development Method: The Meta-Language, Volume 61 ofLecture Notes in Computer Science, Springer-Verlag (1978).

  9. R. Milner, Calculi for Synchrony and Asynchrony,Theoretical Computer Science,25:269–310 (1983).

    Google Scholar 

  10. S. Brookes, C. Hoare, and A. Roscoe, A Theory of Communicating Sequential Processes,J. of the ACM,31(3):560–599 (July 1984).

    Google Scholar 

  11. M. Hennessy,Algebraic Theory of Processes, MIT Press (1988).

  12. C. Hoare,Communicating Sequential Processes, Series in Computer Science, Prentice-Hall (1985).

  13. 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).

    Google Scholar 

  14. 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).

    Google Scholar 

  15. G. Plotkin,A Structural Approach to Operational Semantics, Technical Report DAIMI FN-19, Aarhus University (September 1981).

  16. P. Landin, The Mechanical Evaluation of Expressions,Computer Journal,6(4):308–320 (1964).

    Google Scholar 

  17. L. Cardelli, Amber. In Cousineau, Curien, and Robinet (eds.)LNCS 242: Combinators and Functional Programming Languages, pp. 21–47, Springer-Verlag (1986).

  18. L. Cardelli, The Functional Abstract Machine, Technical Report TR-107, Bell Labs (1983).

  19. 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).

  20. 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).

  21. 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).

  22. 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).

  23. 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).

    Google Scholar 

  24. P. Henderson,Functional Programming: Application and Implementation, Prentice Hall International, London (1980).

    Google Scholar 

  25. G. Plotkin, Call by name, call by value, and the λ calculus,Theoretical Computer Science,1:125–159 (1975).

    Google Scholar 

  26. A. Giacalone, P. Mishra, and S. Prasad,Operational and Algebraic Semantics of Facile, (June 1989) (Manuscript in preparation).

  27. Ada Reference Manual, In Ellis Horowitz (ed.), “Programming Languages: A Grand Tour” (1983).

  28. CHILL Language Definition: CCITT Recommendation Z.200, Volume 5, Number 1, (January 1985).

  29. N. Wirth,Programming in MODULA-2. Texts and Monographs in Computer Science, Springer-Verlag, second, corrected edition (1982).

  30. 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).

    Google Scholar 

  31. J. A. Bergstra and J. W. Klop, Process Algebra for Synchronous Communication,Information and Control,60: 109–137 (1984).

    Google Scholar 

  32. 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).

    Google Scholar 

  33. G. Boudol and D. Austry, Algebre de Processus et Synchronization.Theoretical Computer Science 30:91–131 (1984).

    Google Scholar 

  34. R. Milner, Lectures on a Calculus for Communicating Systems, InLNCS 197: Proc. of the Seminar on Concurrency, pp. 197–220, Springer-Verlag, Berlin (1985).

    Google Scholar 

  35. U. Engberg and M. Nielsen,A Calculus of Communicating Systems with Label Passing, Technical Report DAIMI PB-208, Aarhus University Computer Science Department (1986).

  36. 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).

  37. E. Astesiano and G. Reggio, SMoLCS-Driven Concurrent Calculi, InLNCS 249: TAPSOFT '87 pp. 169–201, Springer-Verlag, Berlin (1987).

    Google Scholar 

  38. 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).

    Google Scholar 

  39. 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).

    Google Scholar 

  40. 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).

  41. G. Kahn, The Semantics of a Simple Language for Parallel Programming, InProc. of the IFIP Conference, pp. 471–475 (1974).

  42. G. Kahn and D. MacQueen,Coroutines and Networks of Parallel Processes, IRIA Report 202 (November 1976).

  43. 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).

  44. P. Henderson, Purely Functional Operating Systems, In Darlington, Henderson, and Turner (eds.),Functional Programming and Its applications, pp. 177–192, Cambridge University Press (1982).

  45. J. Morris and P. Henderson, A Lazy Evaluator, InProc. of the Third ACM Conf. on Principles of Programming Languages (January 1976).

  46. D. Friedman and D. Wise, CONS should not evaluate its arguments, inThird Intl. Colloquium on Automata, Languages and Programming, Edinburgh University Press (1976).

  47. R. Keller, Some Theoretical Aspects of Applicative Multiprocessing, InLNCS 88: Mathematical Foundations of Computer Science, pp. 58–74, Springer-Verlag, Berlin (1980).

    Google Scholar 

  48. 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)

    Google Scholar 

  49. 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).

    Google Scholar 

  50. W. Stoye,The Implementation of Functional Languages using Custom Hardware, PhD thesis, Cambridge University Computer Laboratory (1985).

  51. 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).

  52. R. H. Halstead, Multilisp: A Language for Concurrent Symbolic Computation,ACM Transactions on Programming Languages and Systems,7(4):501–538, (October 1985).

    Google Scholar 

  53. 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).

  54. D. Gelernter and T. London, The Parallel World of Symmetric Lisp, Technical Report, Yale University, New Haven (February 1985).

    Google Scholar 

  55. 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).

  56. 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).

  57. 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).

  58. 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).

  59. 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).

    Google Scholar 

  60. S. Meira, Processes and Functions. In J. Diaz and F. Orejas (eds.),LNCS 352: TAPSOFT '89, pp. 286–297, Springer-Verlag, Berlin (March 1989).

    Google Scholar 

  61. 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).

    Google Scholar 

  62. J. Reppy, Synchronous Operations as First-class Values, InProc. of the SIGPLAN Conf. on Programming Language Design and Implementation, pp. 250–259 (June 1988).

  63. F. Nielson, The Typed λ-Calculus with First-Class Processes, (June, 198) (To appear in PARLE '89).

  64. 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).

    Google Scholar 

  65. L. Cardelli, The Amber Machine. In Cousineau, Curien, and Robinet, (eds.),LNCS 242: Combinators and Functional Programming Languages, pp. 48–70, Springer-Verlag (1986).

  66. 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).

  67. D. Bjørner, and O. Oest, (eds.),LNCS 98: Towards a Formal Description of Ada, Springer-Verlag, Berlin (1980).

    Google Scholar 

  68. 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).

  69. 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).

    Google Scholar 

  70. L. Cardelli, An Implementation Model of Rendezvous Communication, InLNCS 197: Proc. of the Seminar on Concurrency, pp. 449–457, Springer-Verlag, Berlin (1985).

    Google Scholar 

  71. 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).

  72. R. de Nicola and M. Hennessy,CCS without τ's, InLNCS 249: TAPSOFT '87, pp. 138–152, Springer-Verlag, Berlin (1987).

    Google Scholar 

  73. 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.)

Download references

Author information

Authors and Affiliations

Authors

Additional information

This work has been partially supported by NSF CCR-8704309 and NSF CCR-8706973.

Rights and permissions

Reprints 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

Download citation

  • Received:

  • Revised:

  • Issue Date:

  • DOI: https://doi.org/10.1007/BF01491213

Key Words

Navigation