A type system for bounded space and functional in-place update
We show how linear typing can be used to obtain functional programs which modify heap-allocated data structures in place.We present this both as a "design pattern" for writing C-code in a functional style and as a compilation process from linearly typed ...
An incremental unique representation for regular trees
In order to deal with infinite regular trees (or other pointed graph structures) efficiently, we give new algorithms to store such structures. The trees are stored in such a way that their representation is unique and shares substructures as much as ...
A versatile constraint-based type inference system
The combination of subtyping, conditional constraints and rows yields a powerful constraint-based type inference system. We illustrate this claim by proposing solutions to three delicate type inference problems: "accurate" pattern matchings, record ...
First-class structures for standard ML
Standard ML is a statically typed programming language that is suited for the construction of both small and large programs. "Programming in the small" is captured by Standard ML's Core language. "Programming in the large" is captured by Standard ML's ...
Constraint-based inter-procedural analysis of parallel programs
We provide a uniform framework for the analysis of programs with procedures and explicit, unbounded, fork/join parallelism covering not only bitvector problems like reaching definitions or live variables but also non-bitvector problems like strong copy ...