I design, implement, and study programming languages. I aim for high-level language abstractions that can provide the expressiveness and assurance required to build extensible, reliable software.
I welcome broad-minded, technically strong students at all levels to work with me on fun PL research projects. [ URA | CS 499T | MMath and PhD ]
Winter 2021: CS 842 Probabilistic Programming Languages
Handlers for “effectful effects”? Yes, with a type system to defend abstractions.
[ full paper | TR | mechanized proof ]
Robots plan paths against both noise and adversarial uncertainty.
[ full paper | code ]
Algebraic effects (and hence exceptions, asynchrony, ...) made modular
[ full paper | TR | mechanized proof ]
A lot of polymorphism and extensibility in a lightweight package
[ full paper | TR ]
The flexibility of unchecked exceptions, the static guarantees of checked exceptions, and good performance too
[ full paper | TR ]
An expressive, lightweight genericity mechanism with better code reuse and stronger static checking
[ full paper | TR ]