2015/02/17 by Edward Gan, Jesse A. Tov, Greg Morrisett
Computer Science · #cs.PL
paper · pdf · doi:10.4204/eptcs.176.4
published as EPTCS 176, 2015, pp. 34-48 · In Proceedings LINEARITY 2014, arXiv:1502.04419
arxiv created 2015/02/17 · arxiv updated 2015/02/18
Linear and substructural types are powerful tools, but adding them to standard functional programming languages often means introducing extra annotations and typing machinery. We propose a lightweight substructural type system design that recasts the structural rules of weakening and contraction as type classes; we demonstrate this design in a prototype language, Clamp. Clamp supports polymorphic substructural types as well as an expressive system of mutable references. At the same time, it adds little additional overhead to a standard Damas-Hindley-Milner type system enriched with type classes. We have established type safety for the core model and implemented a type checker with type inference in Haskell.