Functional Nets

  • Martin Odersky
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1782)


Functional nets combine key ideas of functional programming and Petri nets to yield a simple and general programming notation. They have their theoretical foundation in Join calculus. This paper presents functional nets, reviews Join calculus, and shows how the two relate.


Reduction Rule Functional Programming Function Application Continuation Function Direct Style 
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.


  1. 1.
    F. Achermann, M. Lumpe, J.-G. Schneider, and O. Nierstrasz. Piccola-a small composition language. Submitted for Publication, available from, 1999.
  2. 2.
    G. Agha, I. A. Mason, S. F. Smith, and C. L. Talcott. A foundation for actor computation. Journal of Functional Programming, 7(1):1–69, 1997.zbMATHCrossRefMathSciNetGoogle Scholar
  3. 3.
    Z. Ariola and A. Sabry. Correctness of monadic state: An imperative call-by-need calculus. In Proc. 25th ACM Symposium on Principles of Programming Languages, pages 62–74, 1998.Google Scholar
  4. 4.
    A. Asperti and N. Bussi. Mobile petri nets. Technical Report UBLCS-96-10, University of Bolognia, May 1996.Google Scholar
  5. 5.
    H. P. Barendregt. The Lambda Calculus: its Syntax and Semantics, volume 103 of Studies in Logic and the Foundations of Mathematics. North-Holland, Amsterdam, revised edition, 1984.zbMATHGoogle Scholar
  6. 6.
    G. Berry and G. Boudol. The chemical abstract machine. In Proc. 17th ACM Symposium on Principles of Programming Languages, pages 81–94, January 1990.Google Scholar
  7. 7.
    G. Boudol. Towards a lambda-calculus for concurrent and communicating systems. In J. Díaz and F. Orejas, editors, Proceedings TAPSOFT’ 1989, pages 149–161, New York, March 1989. Springer-Verlag. Lecture Notes in Computer Science 351.Google Scholar
  8. 8.
    G. Boudol. Asynchrony and the pi-calculus. Research Report 1702, INRIA, May 1992.Google Scholar
  9. 9.
    G. Boudol. The pi-calculus in direct style. In Proc. 24th ACM Symposium on Principles of Programming Languages, pages 228–241, 1997.Google Scholar
  10. 10.
    A. Church. The Calculi of Lambda-Conversion, volume 6 of Annals of Mathematics Studies. Princeton University Press, second edition, 1951.Google Scholar
  11. 11.
    E. Crank and M. Felleisen. Parameter-passing and the lambda-calculus. In Proc. 18th ACM Symposium on Principles of Programming Languages, pages 233–244, January 1991.Google Scholar
  12. 12.
    U. de’Liguoro and A. Piperno. Non deterministic extensions of untyped λ-calculus. Information and Computation, 122(2):149–177, 1 Nov. 1995.CrossRefMathSciNetGoogle Scholar
  13. 13.
    M. Felleisen and R. Hieb. The revised report on the syntactic theories of sequential control and state. Theoretical Computer Science, 103:235–271, 1992.zbMATHCrossRefMathSciNetGoogle Scholar
  14. 14.
    F. L. Fessant. The JoCaml reference manual. INRIA Rocquencourt, 1998. Available from
  15. 15.
    C. Fournet and G. Gonthier. The reflexive chemical abstract machine and the join-calculus. In Proc. 23rd ACM Symposium on Principles of Programming Languages, pages 372–385, Jan. 1996.Google Scholar
  16. 16.
    C. Fournet, G. Gonthier, J.-J. Lévy, L. Maranget, and D. Rémy. A calculus of mobile agents. In 7th International Conference on Concurrency Theory (CONCUR’96), pages 406–421, Pisa, Italy, Aug. 26–29 1996. Springer-Verlag. LNCS 1119.Google Scholar
  17. 17.
    C. Fournet and L. Maranget. The Join-Calculus Language. INRIA Rocquencourt, 1997. Available from
  18. 18.
    E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994.Google Scholar
  19. 19.
    A. Giacalone, P. Mishra, and S. Prasad. Facile: A symmetric integration of concurrent and functional programming. International Journal of Parallel Programming, 18(2):121–160, April 1989.CrossRefGoogle Scholar
  20. 20.
    P. B. Hansen. Structured multiprogramming. Communications of the ACM, 15(7):574–578, July 1972.CrossRefGoogle Scholar
  21. 21.
    C. Hoare. Monitors: An operating system structuring concept. Communications of the ACM, 12(10), Oct. 74.Google Scholar
  22. 22.
    C. A. R. Hoare. Communicating Sequential Processes. Prentice-Hall, Englewood Cliffs, New Jersey, 1985.zbMATHGoogle Scholar
  23. 23.
    K. Honda and N. Yoshida. On reduction-based process semantics. In Proc. 13th Conf. on Foundations of Softawre Technology and Theoretical Computer Science, pages 373–387, Dec. 1993.Google Scholar
  24. 24.
    K. Jensen. Coloured Petri Nets. Basic Concepts. EATCS Monographs on Theoretical Computer Science. Springer Verlag, 1992.Google Scholar
  25. 25.
    P. J. Landin. The next 700 programming languages. Communications of the ACM, 9:157–166, March 1966.zbMATHCrossRefGoogle Scholar
  26. 26.
    J. McCarthy, P. W. Abrahams, D. J. Edwards, T. P. Hart, and I. L. Levin. Lisp 1.5 Programmer’s Manual. MIT Press, 1969.Google Scholar
  27. 27.
    R. Milner, J. Parrow, and D. Walker. A calculus of mobile processes. Information and Computation, 100:1–77, 1992.zbMATHCrossRefMathSciNetGoogle Scholar
  28. 28.
    M. Odersky, D. Rabin, and P. Hudak. Call-by-name, assignment, and the lambda calculus. In Proc. 20th ACM Symposium on Principles of Programming Languages, pages 43–56, January 1993.Google Scholar
  29. 29.
    C. Petri. Kommunikation mit Automaten. Schriften des IIM 2, Institut für Instrumentelle Mathematik, Bonn, 1962. English translation: Technical Report RADC-TR-65-377, Vol. 1, Suppl. 1, Applied Data Research, Princeton, New Jersey, Contract AF 30 (602)-3324, 1966.Google Scholar
  30. 30.
    B. C. Pierce and D. N. Turner. Pict: A programming language based on the pi-calculus. Technical Report CSCI 476, Computer Science Department, Indiana University, 1997.Google Scholar
  31. 31.
    G. D. Plotkin. Call-by-name, call-by-value, and the λ-calculus. Theoretical Computer Science, 1:125–159, 1975.zbMATHCrossRefMathSciNetGoogle Scholar
  32. 32.
    W. Reisig. Petri Nets, volume 4 of EATCS Monographs on Theoretical Computer Science. Springer-Verlag, 1985.Google Scholar
  33. 33.
    J. H. Reppy. CML: A higher-order concurrent language. In Proceedings of the ACM SIGPLAN’ 91 Conference on Programming Language Design and Implementation, pages 293–305, June 1991.Google Scholar
  34. 34.
    A. Sabry and J. Field. Reasoning about explicit and implicit representations of state. In SIPL’ 93 ACM SIGPLAN Workshop on State in Programming Languages, Copenhagen, Denmark, pages 17–30, June 1993. Yale University Research Report YALEU/DCS/RR-968.Google Scholar
  35. 35.
    G. Smolka, M. Henz, and J. Würtz. Object-oriented concurrent constraint programming in Oz. In P. van Hentenryck and V. Saraswat, editors, Principles and Practice of Constraint Programming, chapter 2, pages 29–48. The MIT Press, 1995.Google Scholar
  36. 36.
    V. Swarup, U. S. Reddy, and E. Ireland. Assignments for applicative languages. In J. Hughes, editor, Functional Programming Languages and Computer Architecture, pages 192–214. Springer-Verlag, August 1991. Lecture Notes in Computer Science 523.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2000

Authors and Affiliations

  • Martin Odersky
    • 1
  1. 1.École Polytechnique Fédérale de LausanneLausanne

Personalised recommendations