Processes, Functions, and Datatypes

Based on a name-passing calculus and on its typing system we show how to build several language constructors towards strongly-typed concurrent programming languages. In particular, we introduce a notion of datatype declaration , and show how to create values of a datatype and how to take such values apart. Further expressions include a form of abstraction and of application. Expressions evaluate to names and can replace any (non-binding) name in the calculus, thus achieving a clean incorporation of expressions in a name-passing calculus. A systematic translation of the derived constructors into the basic calculus provides for the semantics and for typing rules for the new construc-tors. c

[1]  Mario Tokoro,et al.  An Object Calculus for Asynchronous Communication , 1991, ECOOP.

[2]  Mario Tokoro,et al.  A Typing System for a Calculus of Objects , 1993, ISOTAS.

[3]  Gert Smolka The Oz Programming Model , 1996 .

[4]  Carl Hewitt,et al.  A Universal Modular ACTOR Formalism for Artificial Intelligence , 1973, IJCAI.

[5]  G. Smolka A Foundation for Higher-order Concurrent Constraint Programming , 1994 .

[6]  Gul A. Agha,et al.  ACTORS - a model of concurrent computation in distributed systems , 1985, MIT Press series in artificial intelligence.

[7]  T. Vasco,et al.  Predicative Polymorphism in-Calculus , 1994 .

[8]  D. A. Turner,et al.  Miranda: A Non-Strict Functional language with Polymorphic Types , 1985, FPCA.

[9]  Robin Milner,et al.  Functions as processes , 1990, Mathematical Structures in Computer Science.

[10]  Vasco Thudichum Vasconcelos,et al.  Principal Typing Schemes in a Polyadic pi-Calculus , 1993, CONCUR.

[11]  Gordon D. Plotkin,et al.  Call-by-Name, Call-by-Value and the lambda-Calculus , 1975, Theor. Comput. Sci..

[12]  Cédric Fournet,et al.  The reflexive CHAM and the join-calculus , 1996, POPL '96.

[13]  David B. MacQueen,et al.  The Definition of Standard ML (Revised) , 1997 .

[14]  Vasco Thudichum Vasconcelos,et al.  Typed Concurrent Objects , 1994, ECOOP.

[15]  Martín Abadi,et al.  A Theory of Objects , 1996, Monographs in Computer Science.

[16]  Vasco T. Vasconcelos,et al.  A process-calculus approach to typed concurrent objects , 1995 .

[17]  Davide Sangiorgi,et al.  Typing and subtyping for mobile processes , 1993, [1993] Proceedings Eighth Annual IEEE Symposium on Logic in Computer Science.

[18]  Robin Milner,et al.  A Calculus of Mobile Processes, II , 1992, Inf. Comput..

[19]  F. Cardone,et al.  Two extensions of Curry's type inference system , 1990 .

[20]  Robin Milner,et al.  Principal type-schemes for functional programs , 1982, POPL '82.

[21]  Atsushi Ohori,et al.  A compilation method for ML-style polymorphic record calculi , 1992, POPL '92.

[22]  Carl Hewitt,et al.  Viewing Control Structures as Patterns of Passing Messages , 1977, Artif. Intell..

[23]  Pierre America,et al.  Pool-T: a parallel object-oriented language , 1987 .

[24]  Benjamin C. Pierce,et al.  Pict: a programming language based on the Pi-Calculus , 2000, Proof, Language, and Interaction.

[25]  Vasco Thudichum Vasconcelos Predicative Polymorphism in Pi-Calculus , 1994, PARLE.

[26]  Simon L. Peyton Jones,et al.  Report on the programming language Haskell: a non-strict, purely functional language version 1.2 , 1992, SIGP.

[27]  John C. Mitchell,et al.  Theoretical aspects of object-oriented programming: types, semantics, and language design , 1994, Choice Reviews Online.

[28]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Inf. Comput..