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.
A type system keeps “effectful effects” under control
Robots plan paths with both noise and adversarial uncertainty
Algebraic effects (and hence exceptions, asynchrony, ...) made modular
A lot of polymorphism and extensibility in a lightweight package
The flexibility of unchecked exceptions, the static guarantees of checked exceptions, and good performance too
An expressive, lightweight genericity mechanism with better code reuse and stronger static checking