HaskellWiki

Haskell | Wiki community | Recent changes
Random page | Special pages

 

Not logged in
Log in | Help

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?

You can start GHCi or Hugs and use the :browse Modulename directive. This will list all type signatures including the infered ones.

Retrieved from "http://haskell.org/haskellwiki/Type_signatures_as_good_style"

This page has been accessed 534 times. This page was last modified 10:01, 4 January 2008. Recent content is available under a simple permissive license.