Dr. Morris’s project sits at the intersection of two important goals in practical and correct software development. The first is precisely specifying requirements of programs and program components. For example, programs should not compare functions for equality or add arbitrary integers to pointers. The second is modular and extensible program construction. For example, internal changes to one program component should not cause cascading changes to other components.
The primary focus of Dr. Morris’ project is the programming language Haskell. This language has an advanced type system with several features for modular and extensible programming, most prominently type classes and type families. These features have evolved mostly independently, with different approaches to their specification and implementation, resulting in a constellation of features with frequently surprising interactions and limitations.
This project will develop a new core language for Haskell, unifying the treatment of type classes and type families. By doing so, it will simplify Haskell implementations and make the existing features of Haskell more regular and more expressive. Dr. Morris’ project will also enable new features of Haskell, which close the expressiveness gap between type families and type classes. Finally, by giving these features a uniform underlying semantics, it will ultimately make it easier for them to be adopted in other languages.
|