Programming With Permissions: An Introduction to HaMLet
The authors present the design of HaMLet, a programming language in the ML tradition, which places strong emphasis on the control of aliasing and access to mutable memory. A balance between simplicity and expressiveness is achieved by marrying a static discipline of permissions and a dynamic mechanism of adoption and abandon. Programming with mutable, heap-allocated objects and data structures is difficult. In many typed imperative programming languages, including Java, C#, and ML, the type system keeps track of the structure of objects, but not of how they are aliased.