- Prevent type-related bugs
- Create custom types (See the documentation)
- Make the type of your functions explicit.
- Allows typechecking of higher order functions too (See documentation)
- Makes code more self explainatory.