|  |  | IntroductionFunctional Nets are a new way to think about
programs and computation, born from a fusion of the essential ideas of
functional programming and Petri nets. As in functional programming,
the basic computation step in a functional net rewrites function applications
to function bodies. As in Petri-Nets, a rewrite step can require the combined
presence of several inputs (where in this case inputs are function applications).
This fusion of ideas from two different areas results in a style of programming
which is at the same time very simple and very expressive.
 
Papers 
 An Overview of Functional Nets.
     Martin Odersky. Lecture notes, 
     APPSEM Summer School, Caminha, Portugal,
     September 2000.
     
     
 Functional Nets.
     Martin Odersky. Invited paper at
     European Symposium on
     Programming 2000. 
     Lecture Notes in Computer Science, Springer Verlag, 2000.
     
     Abstract.
     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.
     
     
 A Functional View of Join.
     Gang Chen, Martin Odersky, Christoph Zenger, Matthias Zenger.
     Technical Report ACRC-99-016, University of South Australia, 1999.
     
     Abstract.
     Join calculus, usually presented as a process calculus, is suitable as
     a foundation of both sequential and concurrent programming.  We give a
     new operational semantics of join calculus, expressed as a reduction
     system with a single reduction rule similar to beta reduction in
     lambda calculus. We also introduce a new Hindley/Milner style type
     system for join calculus.  Compared to previous work, the type system
     gives more accurate types of composite and mutually recursive
     definitions. The type system's soundness is established by showing
     that our reduction rule keeps typings invariant. We present an
     algorithm for type inference and show its soundness and completeness.
     
     
 Functional Nets.
     Martin Odersky.
     Colloque d'Informatique at EPFL, Oct 19, 1999..
     Abstract.
     Foundational work on programming has been based traditionally on some
     variant of lambda calculus. This approach, while ideally suited to
     sequential programming, is increasingly at odds with modern programs
     which are reactive in their interfaces and concurrent in their
     implementation. Standard process calculi, on the other hand, model
     nothing but the concurrent aspects of systems, and are ill-suited to
     express sequential behavior.
     This talk will show how nets consisting of functions and rewrite
     rules can serve as a uniform foundation of both sequential and
     concurrent programming. These nets have close relationships to Petri
     nets; in fact Petri nets can be regarded as a graphical notation for a
     a subset of functional nets. Functional nets have been formalized by
     Gonthier et al. under the name of join calculus.
     This talk will show how functional nets can be seen as a natural
     extension of sequential functional programming, and how they can model
     imperative, concurrent, and object-oriented programming styles.
     Browse HTML-Version
 
 
ImplementationCurrently we are developing Funnel, a small programming
language based on Functional Nets. You can download a copy of our
Funnel compiler and runtime environment from our
Funnel homepage.
 
 |  |