Main features of Agda
- Dependent types
- Indexed datatypes and dependent pattern matching
- Termination checking and productivity checking
- A universe hierachy with universe polymorphism
- Record types with copattern matching
- Coinductive datatypes
- Sized types
- Implicit arguments
- Instance arguments (~ Haskell’s typeclasses)
- Parametrized modules (~ ML functors)
- A FFI to Haskell
We will use many of these in the course of this tutorial!