> Although it usually isn't necessary, it makes drastic improvements to the quality of error messages.
It also provides valuable documentation. You can usually work out what a function does from just its type (and quite often, that's all you have to work with).