Observers for Linear Types

Linear types provide the framework for a safe embedding of mutable state in functional languages by enforcing the principle that variables of linear type must be used exactly once. A potential disadvantage of this approach is that it places read accesses to such variables under the same restriction as write accesses, and thus prevents reads to proceed in parallel. We present here an extension of linear types which augments the usual distinction between linear and non-linear by a third state, observers of linear variables. Since, unlike linear variables, observers can be duplicated, multiple concurrent reads are made possible. On the other hand, observers must be short-lived enough to never overlap with mutations. The resulting type system is in many aspects similar to the one of ML: It is polymorphic, has principal types, and admits a type reconstruction algorithm.

[1]  Henry G. Baker,et al.  Unify and conquer , 1990, LISP and Functional Programming.

[2]  Philip Wadler,et al.  Comprehending monads , 1990, LISP and Functional Programming.

[3]  Paul Hudak,et al.  Single-threaded polymorphic lambda calculus , 1990, [1990] Proceedings. Fifth Annual IEEE Symposium on Logic in Computer Science.

[4]  Shimon Cohen Multi-Version Structures in Prolog , 1984, FGCS.

[5]  Vivek Sarkar,et al.  A simple and efficient implmentation approach for single assignment languages , 1988, LFP '88.

[6]  Alain Deutsch,et al.  On determining lifetime and aliasing of dynamically allocated data in higher-order functional specifications , 1989, POPL '90.

[7]  Philip Wadler Is there a use for linear logic , 1991 .

[8]  Philip Wadler,et al.  Is there a use for linear logic? , 1991, PEPM '91.

[9]  Philip Wadler,et al.  Linear Types can Change the World! , 1990, Programming Concepts and Methods.

[10]  Martin Odersky,et al.  How to make destructive updates less destructive , 1991, POPL '91.

[11]  Pierre Jouvelot,et al.  Algebraic reconstruction of types and effects , 1991, POPL '91.

[12]  Samson Abramsky,et al.  Computational Interpretations of Linear Logic , 1993, Theor. Comput. Sci..

[13]  Prakash Panangaden,et al.  Computation of aliases and support sets , 1987, POPL '87.

[14]  Yves Lafont,et al.  The Linear Abstract Machine , 1988, Theor. Comput. Sci..

[15]  Paul Hudak A semantic model of reference counting and its abstraction (detailed summary) , 1986, LFP '86.

[16]  Patrick Lincoln,et al.  Linear logic , 1992, SIGA.

[17]  David A. Schmidt Detecting global variables in denotational specifications , 1985, TOPL.

[18]  Vipin Swarup,et al.  Assignments for Applicative Languages , 1991, FPCA.

[19]  S. Purushothaman Iyer,et al.  A compositional analysis of evaluation-order and its application , 1990, LISP and Functional Programming.

[20]  Joyce L. Vedral,et al.  Functional Programming Languages and Computer Architecture , 1989, Lecture Notes in Computer Science.

[21]  Dominique Clément,et al.  Natural semantics on the computer , 1984 .

[22]  Adrienne G. Bloss Update analysis and the efficient implementation of functional aggregates , 1989, FPCA.

[23]  David K. Gifford,et al.  Polymorphic effect systems , 1988, POPL '88.

[24]  Philip Wadler,et al.  Comprehending monads , 1990, Mathematical Structures in Computer Science.

[25]  M. Nivat Fiftieth volume of theoretical computer science , 1988 .