- High performance
- Kind polymorphism
- Generic programming
- Type-level programming
- Dependent-types, singleton types
- Category theory
- Graph reduction
- Higher-order abstract syntax
- Compiler design for functional languages
- Profunctor optics
|
- Design a generic, lawful library with broad appeal
- Prove properties manually using equational reasoning
- Design and implement a new functional programming language
- Create novel abstractions with laws
- Write distributed systems with certain guarantees
- Use proof systems to formally prove properties of code
- Create libraries that do not permit invalid states.
- Use dependent typing to prove more properties ...
|