Practical programming with substructural types

Substructural logics remove from classical logic rules for reordering, duplication, or dropping of assumptions. Because propositions in such a logic may no longer be freely copied or ignored, this suggests understanding propositions in substructural logics as representing resources rather than truth. For the programming language designer, substructural logics thus provide a framework for considering type systems that can track the changing states of logical and physical resources. While several substructural type systems have been proposed and implemented, many of these have targeted substructural types at a particular purpose, rather than offering them as a general facility. The more general substructural type systems have been theoretical in nature and too unwieldy for practical use. This dissertation presents the design of a general purpose language with substructural types, and discusses several language design problems that had to be solved in order to make substructural types useful in practice.

[1]  Hongwei Xi,et al.  Safe Programming with Pointers Through Stateful Views , 2005, PADL.

[2]  Vasco Thudichum Vasconcelos,et al.  Language Primitives and Type Discipline for Structured Communication-Based Programming Revisited: Two Systems for Higher-Order Session Communication , 1998, SecReT@ICALP.

[3]  Riccardo Pucella,et al.  A theory of substructural types and control , 2011, OOPSLA '11.

[4]  Paul Curzon,et al.  On Intuitionistic Linear Logic , 2005 .

[5]  Riccardo Pucella,et al.  Practical affine types , 2011, POPL '11.

[6]  Marko C. J. D. van Eekelen,et al.  CLEAN: A language for functional graph writing , 1987, FPCA.

[7]  Robert DeLine,et al.  Enforcing high-level protocols in low-level software , 2001, PLDI '01.

[8]  Nick Benton,et al.  A Mixed Linear and Non-Linear Logic: Proofs, Terms and Models (Extended Abstract) , 1994, CSL.

[9]  Frank Pfenning,et al.  Session Types as Intuitionistic Linear Propositions , 2010, CONCUR.

[10]  Claudio V. Russo,et al.  F-ing modules , 2010, TLDI '10.

[11]  Robin Milner,et al.  Definition of standard ML , 1990 .

[12]  Claudio V. Russo,et al.  QML: explicit first-class polymorphism for ML , 2009 .

[13]  P. J. Landin,et al.  A Generalization of Jumps and Labels , 1998, High. Order Symb. Comput..

[14]  Robert DeLine,et al.  Adoption and focus: practical linear types for imperative programming , 2002, PLDI '02.

[15]  J. Y. Girard,et al.  Interpretation fonctionelle et elimination des coupures dans l'aritmetique d'ordre superieur , 1972 .

[16]  Daan Leijen First-class polymorphism with existential types , 2006 .

[17]  Matthias Felleisen,et al.  Contracts for higher-order functions , 2002, ICFP '02.

[18]  Steve Zdancewic,et al.  Lightweight linear types in system f° , 2010, TLDI '10.

[19]  James R. Larus,et al.  Language support for fast and reliable message-based communication in singularity OS , 2006, EuroSys.

[20]  Robert Bruce Findler,et al.  Operational semantics for multi-language programs , 2007, POPL '07.

[21]  Matthew Fluet Monadic and Substructural Type Systems For Region-Based Memory Management , 2007 .

[22]  W. Richard Stevens,et al.  Unix network programming , 1990, CCRV.

[23]  Matthias Felleisen,et al.  A Syntactic Approach to Type Soundness , 1994, Inf. Comput..

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

[25]  Arthur Charguéraud,et al.  Functional translation of a calculus of capabilities , 2008, ICFP 2008.

[26]  Riccardo Pucella,et al.  Stateful Contracts for Affine Types , 2010, ESOP.

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

[28]  Arvind,et al.  M-Structures: Extending a Parallel, Non-strict, Functional Language with State , 1991, FPCA.

[29]  Peyton Jones,et al.  Haskell 98 language and libraries : the revised report , 2003 .

[30]  John Tang Boyland,et al.  Checking Interference with Fractional Permissions , 2003, SAS.

[31]  Juan Chen,et al.  Enforcing Stateful Authorization and Information Flow Policies in Fine , 2010, ESOP.

[32]  Daan Leijen HMF: simple type inference for first-class polymorphism , 2008, ICFP.

[33]  Philip Wadler,et al.  There's No Substitute for Linear Logic , 1991 .

[34]  Andrew Barber,et al.  Dual Intuitionistic Linear Logic , 1996 .

[35]  Marinus J. Plasmeijer,et al.  Uniqueness Typing Simplified , 2008, IFL.

[36]  Olivier Danvy,et al.  A Functional Abstraction of Typed Contexts , 1989 .

[37]  Matthias Felleisen,et al.  The theory and practice of first-class prompts , 1988, POPL '88.

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

[39]  Philip Wadler,et al.  How to make ad-hoc polymorphism less ad hoc , 1989, POPL '89.

[40]  Norman I. Adams,et al.  The Revised Revised Report on Scheme or An Uncommon Lisp , 1985 .

[41]  Matthew Fluet,et al.  A Linear Language with Locations , 2007 .

[42]  Sam Tobin-Hochstadt,et al.  The design and implementation of typed scheme , 2008, POPL '08.

[43]  Pierre Falzon,et al.  Institut national de recherche en informatique et en automatique , 1992 .

[44]  Ravi P. Agarwal,et al.  The Canonical Forms , 2009 .

[45]  J. Gregory Morrisett,et al.  A step-indexed model of substructural state , 2005, ICFP '05.

[46]  Gerald J. Sussman,et al.  Scheme: A Interpreter for Extended Lambda Calculus , 1998, High. Order Symb. Comput..

[47]  Chung-chieh Shan,et al.  A Substructural Type System for Delimited Continuations , 2007, TLCA.

[48]  Martin Steffen,et al.  Polarized higher-order subtyping , 1998 .

[49]  Mads Tofte,et al.  Region-based Memory Management , 1997, Inf. Comput..

[50]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

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

[52]  Sam Tobin-Hochstadt,et al.  Interlanguage migration: from scripts to programs , 2006, OOPSLA '06.

[53]  Francois Pottier Wandering through linear types, capabilities, and regions , 2007 .

[54]  Hayo Thielecke,et al.  From control effects to typed continuation passing , 2003, POPL '03.

[55]  Didier Rémy,et al.  MLF: raising ML to the power of system F , 2003, ACM SIGPLAN Notices.

[56]  Martin Odersky,et al.  Type Inference with Constrained Types , 1999, Theory Pract. Object Syst..

[57]  Benjamin C. Pierce,et al.  Types and programming languages: the next generation , 2003, 18th Annual IEEE Symposium of Logic in Computer Science, 2003. Proceedings..

[58]  John H. Reppy,et al.  Concurrent programming in ML , 1999 .

[59]  J. Gregory Morrisett,et al.  Linear Regions Are All You Need , 2006, ESOP.

[60]  James Cheney,et al.  Region-based memory management in cyclone , 2002, PLDI '02.

[61]  David Walker,et al.  Typed memory management via static capabilities , 2000, TOPL.

[62]  Aleksy Schubert,et al.  The EML Kit Version 1 , 1996 .

[63]  António Ravara,et al.  Session Types for Functional Multithreading , 2004, CONCUR.

[64]  Ivan E. Sutherland,et al.  Reentrant polygon clipping , 1974, Commun. ACM.

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

[66]  Robert E. Strom,et al.  Typestate: A programming language concept for enhancing software reliability , 1986, IEEE Transactions on Software Engineering.

[67]  Steve Zdancewic,et al.  Lolliproc: to concurrency from classical linear logic via curry-howard and control , 2010, ICFP '10.

[68]  Mark P. Jones,et al.  First-class polymorphism with type inference , 1997, POPL '97.

[69]  Yukiyoshi Kameyama,et al.  Polymorphic Delimited Continuations , 2007, APLAS.

[70]  Vincent Simonet,et al.  Type Inference with Structural Subtyping: A Faithful Formalization of an Efficient Constraint Solver , 2003, APLAS.

[71]  Bernardo Toninho,et al.  Dependent session types via intuitionistic linear type theory , 2011, PPDP.

[72]  J. Gregory Morrisett,et al.  L3: A Linear Language with Locations , 2007, Fundam. Informaticae.

[73]  Riccardo Pucella,et al.  Haskell session types with (almost) no class , 2008, Haskell '08.

[74]  John C. Reynolds,et al.  Definitional Interpreters for Higher-Order Programming Languages , 1972, ACM '72.

[75]  Andrew W. Appel,et al.  Standard ML of New Jersey , 1991, PLILP.

[76]  Didier Rémy,et al.  MLF: raising ML to the power of system F , 2014, SIGP.

[77]  John B. Goodenough,et al.  Structured exception handling , 1975, POPL '75.

[78]  Amal Ahmed,et al.  Parametric Polymorphism through Run-Time Sealing or, Theorems for Low, Low Prices! , 2008, ESOP.