Lightweight monadic regions

9 years 3 months ago
Lightweight monadic regions
We present Haskell libraries that statically ensure the safe use of resources such as file handles. We statically prevent accessing an already closed handle or forgetting to close it. The libraries can be trivially extended to other resources such as database connections and graphic contexts. Because file handles and similar resources are scarce, we want to not just assure their safe use but further deallocate them soon after they are no longer needed. Relying on Fluet and Morrisett’s [4] calculus of nested regions, we contribute a novel, improved, and extended implementation of the calculus in Haskell, with file handles as resources. Our library supports region polymorphism and implicit region subtyping, along with higher-order functions, mutable state, recursion, and run-time exceptions. A program may allocate arbitrarily many resources and dispose of them in any order, not necessarily LIFO. Region annotations are part of an expression’s inferred type. Our new Haskell encodin...
Oleg Kiselyov, Chung-chieh Shan
Added 09 Nov 2010
Updated 09 Nov 2010
Type Conference
Year 2008
Authors Oleg Kiselyov, Chung-chieh Shan
Comments (0)