Type signatures as good style
Categories: FAQ | Style
1 Question
Since Haskell type checkers can automatically derive types of expressions why shall I put explicit type signatures in my programs?
2 Answer
Using explicit type signatures is good style and GHC with option -Wall warns about missing signatures.
Signatures are a good documentation and not all Haskell program readers have a type inference algorithm built-in.
There are also some cases where the infered signature is too general for your purposes.
E.g. the infered (most general) type for asTypeOf is a -> b -> a,
but the purpose of asTypeOf is to unify the types of both operands.
The more special signature a -> a -> a is what you want and it cannot be infered automatically.
Another example:
emptyString :: ShowS emptyString = id
Where ShowS is String -> String rather than a -> a.
I remember that for some type extensions the automatic inference fails. Examples?
3 How to add a bunch of signatures?
Ok, this convinced me. How can I add all the signatures I did not write so far?
