An Introduction to Functional Nets

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


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 gives an overview of functional nets as a kernel programming language, it presents an object-based version of Join calculus, and it shows how the two relate.


Mutual Exclusion Function Application Direct Style Escape Analysis Asynchronous Channel 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [AB96]
    Andrea Asperti and Nadia Bussi. Mobile petri nets. Technical Report UBLCS-96-10, University of Bolognia, May 1996.Google Scholar
  2. [AC96]
    Martin Abadi and Luca Cardelli. A Theory of Objects. Monographs in Computer Science. Springer Verlag, 1996.Google Scholar
  3. [AMST97]
    Gul Agha, Ian A. Mason, Scott F. Smith, and Carolyn L. Talcott. A foundation for actor computation. Journal of Functional Programming, 7(1):1–69, 1997.zbMATHCrossRefMathSciNetGoogle Scholar
  4. [AN00]
    Franz Achermann and Oscar Nierstrasz. Applications = components + scripts-a tour of Piccola. In Software Architectures and Component Technology. Kluwer, 2000.Google Scholar
  5. [AOS+00]
    Philippe Altherr, Martin Odersky, Michel Schinz, Matthias Zenger, and Christoph Zenger. Funnel distribution. available from, July 2000.
  6. [AS98]
    Zena Ariola and Amr 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
  7. [ASS84]
    Harold Abelson, Gerald Jay Sussman, and Julie Sussman. The Structure and Interpretation of Computer Programs. MIT Press, Cambridge, Massachusetts, 1984.Google Scholar
  8. [Bac78]
    John W. Backus. Can programming be liberated from the von neumann style? Communications of the ACM, 21:613–641, 1978.zbMATHCrossRefMathSciNetGoogle Scholar
  9. [Bar84]
    Hendrik 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
  10. [BB90]
    Gérard Berry and Gérard Boudol. The chemical abstract machine. In Proc. 17th ACM Symposium on Principles of Programming Languages, pages 81–94, January 1990.Google Scholar
  11. [Bir98]
    Richard Bird. Introduction to Functional Programming using Haskell. Prentice Hall, 1998. 2nd edition.Google Scholar
  12. [Bou89]
    Gérard 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
  13. [Bou97]
    Gérard Boudol. The pi-calculus in direct style. In Proc. 24th ACM Symposium on Principles of Programming Languages, pages 228–241, 1997.Google Scholar
  14. [BOW98]
    Kim B. Bruce, Martin Odersky, and Philip Wadler. A staticalle safe alternative to virtual types. In Proc. 5th International Workshop on Foundations of Object-Oriented Languages, San Diego., January 1998.Google Scholar
  15. [Car84]
    Luca Cardelli. A semantics of multiple inheritance. In Gilles Kahn, David B. MacQueen, and Gordon D. Plotkin, editors, Semantics of Data Types, pages 51–67. Springer-Verlag, June 1984. Lecture Notes in Computer Science 173.Google Scholar
  16. [Chu51]
    Alonzo Church. The Calculi of Lambda-Conversion, volume 6 of Annals of Mathematics Studies. Princeton University Press, second edition, 1951.Google Scholar
  17. [DM82]
    Luis Damas and Robin Milner. Principal type schemes for functional programs. In Proc. 9th ACM Symposium on Principles of Programming Languages, pages 207–211, January 1982.Google Scholar
  18. [dP95]
    Ugo de’Liguoro and Adolfo Piperno. Non deterministic extensions of untyped λ-calculus. Information and Computation, 122(2):149–177, 1 November 1995.Google Scholar
  19. [Fes98]
    Fabrice Le Fessant. The JoCaml reference manual. INRIA Rocquencourt, 1998. Available from Scholar
  20. [FG96]
    Cédric Fournet and Georges Gonthier. The reflexive chemical abstract machine and the join-calculus. In Proc. 23rd ACM Symposium on Principles of Programming Languages, pages 372–385, January 1996.Google Scholar
  21. [FGL+96]
    Cédric Fournet, Georges Gonthier, Jean-Jacques Lévy, Luc Maranget, and Didier Rémy. A calculus of mobile agents. In 7th International Conference on Concurrency Theory (CONCUR’96), pages 406–421, Pisa, Italy, August 26–29 1996. Springer-Verlag. LNCS 1119.Google Scholar
  22. [FH92]
    Matthias Felleisen and Robert Hieb. The revised report on the syntactic theories of sequential control and state. Theoretical Computer Science, 103:235–271, 1992.zbMATHCrossRefMathSciNetGoogle Scholar
  23. [FM97]
    Cédric Fournet and Luc Maranget. The Join-Calculus Language. INRIA Rocquencourt, 1997. Available from Scholar
  24. [GHJV94]
    Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994.Google Scholar
  25. [GJSB00]
    James Gosling, Bill Joy, Guy Steele, and Gilad Bracha. The Java Language Specification, Second Edition. Java Series, Sun Microsystems, 2000. ISBN 0-201-31008-2.Google Scholar
  26. [GMP89]
    Alessandro Giacalone, Prateek Mishra, and Sanjiva Prasad. Facile: A symmetric integration of concurrent and functional programming. International Journal of Parallel Programming, 18(2):121–160, April 1989.Google Scholar
  27. [Han72]
    Per Brinch Hansen. Structured multiprogramming. Communications of the ACM, 15(7):574–578, July 1972.Google Scholar
  28. [Hoa85]
    C. A. R. Hoare. Communicating Sequential Processes. Prentice-Hall, Englewood Cliffs, New Jersey, 1985.zbMATHGoogle Scholar
  29. [Hoa74]
    C.A.R. Hoare. Monitors: An operating system structuring concept. Communications of the ACM, 12(10), October 74.Google Scholar
  30. [Hud89]
    Paul Hudak. Conception, evolution, and application of functional programming languages. ACM Computing Surveys, 21(3):359–411, 1989.CrossRefGoogle Scholar
  31. [Jen92]
    K. Jensen. Coloured Petri Nets. Basic Concepts. EATCS Monographs on Theoretical Computer Science. Springer Verlag, 1992.Google Scholar
  32. [Ker87]
    Jon Kerridge. Occam programming: a practical approach. Blackwell Scientific, 1987.Google Scholar
  33. [Lan66]
    Peter J. Landin. The next 700 programming languages. Communications of the ACM, 9:157–166, March 1966.Google Scholar
  34. [MAE+69]
    John McCarthy, Paul W. Abrahams, D. J. Edwards, T. P. Hart, and I. L. Levin. Lisp 1.5 Programmer’s Manual. MIT Press, 1969.Google Scholar
  35. [Mil78]
    Robin Milner. A theory of type polymorphism in programming. Journal of Computer and System Sciences, 17:348–375, Dec 1978.Google Scholar
  36. [Mil80]
    Robin Milner. A Calculus of Communicating Systems, volume 92 of Lecture Notes in Computer Science. Springer-Verlag, New York, 1980.zbMATHGoogle Scholar
  37. [MPW92]
    Robin Milner, Joachim Parrow, and David Walker. A calculus of mobile processes. Information and Computation, 100:1–77, 1992.zbMATHCrossRefMathSciNetGoogle Scholar
  38. [Ode00a]
    Martin Odersky. Functional nets. In Proc. European Symposium on Programming, number 1782 in LNCS, pages 1–25. Springer Verlag, March 2000.Google Scholar
  39. [Ode00b]
    Martin Odersky. Programming with functional nets. Technical Report 2000/331, Departement d’Informatique, EPFL, March 2000.Google Scholar
  40. [ORH93]
    Martin Odersky, Dan Rabin, and Paul 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
  41. [OZZ01]
    Martin Odersky, Matthias Zenger, and Christoph Zenger. Colored local type inference. In Proc. ACM Symposium on Principles of Programming Languages, 2001.Google Scholar
  42. [Pau91]
    L. C. Paulson. ML for the Working Programmer. Cambridge University Press, 1991. ISBN 0-521-39022-2.Google Scholar
  43. [Pet62]
    C.A. 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
  44. [PG92]
    Young Gil Park and Benjamin Goldberg. Escape analysis on lists. In Proceedings of the ACM SIGPLAN’ 92 Conference on Programming Language Design and Implementation, San Francisco, California, pages 116–127. ACM Press, June 1992.Google Scholar
  45. [Plo75]
    Gordon D. Plotkin. Call-by-name, call-by-value, and the λ-calculus. Theoretical Computer Science, 1:125–159, 1975.zbMATHCrossRefMathSciNetGoogle Scholar
  46. [PS94]
    Jens Palsberg and Michael I. Schwartzbach. Object-Oriented Type-Systems. John Wiley, 1994.Google Scholar
  47. [PT93]
    Benjamin C. Pierce and David N. Turner. Object-oriented programming without recursive types. In Conference Record of the Twentieth Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Charleston, South Carolina, January 10-13, 1993, pages 299–312. ACM Press, January 1993.Google Scholar
  48. [PT97]
    Benjamin C. Pierce and David N. Turner. Pict: A programming language based on the pi-calculus. Technical Report CSCI 476, Computer Science Department, Indiana University, 1997.Google Scholar
  49. [PT98]
    Benjamin C. Pierce and David N. Turner. Local type inference. In Proc. 25th ACM Symposium on Principles of Programming Languages, 1998.Google Scholar
  50. [Red88]
    Uday Reddy. Objects as closures: Abstract semantics of object-oriented languages. In Proceedings of the 1988 ACM Conference on Lisp and Functional Programming, pages 289–297, July 1988.Google Scholar
  51. [Rei85]
    W. Reisig. Petri Nets, volume 4 of EATCS Monographs on Theoretical Computer Science. Springer-Verlag, 1985.Google Scholar
  52. [Rep91]
    John H. Reppy. CML: A higher-order concurrent language. In Proc. ACM SIGPLAN Conf. on Programming Language Design and Implementation, pages 293–305, June 1991.Google Scholar
  53. [SF93]
    Amr Sabry and John 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
  54. [SHW95]
    Gert Smolka, Martin Henz, and Jörg 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
  55. [SRI91]
    Vipin Swarup, Uday S. Reddy, and Evan Ireland. Assignments for applicative languages. In John Hughes, editor, Functional Programming Languages and Computer Architecture, pages 192–214. Springer-Verlag, August 1991. Lecture Notes in Computer Science 523.Google Scholar
  56. [Wir83]
    Niklaus Wirth. Programming in Modula-2. Springer Verlag, 2nd edition, 1983.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2002

Authors and Affiliations

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

Personalised recommendations