The study of type systems.
The theory and practice of compiler implementation.
A programming paradigm where programs are constructed by applying and composing functions.