"The regular (full) signature of a function specifies the type of the function and -- if the type includes constrained type variables -- enumerates all of the typeclass constraints. The list of the constraints may be quite large. Partial signatures help when:
- we wish to add an extra constraint to the type of the function but we do not wish to explicitly write the type of the function and enumerate all of the typeclass constraints,
- we wish to specify the type of the function and perhaps some of the constraints -- and let the typechecker figure out the rest of them.
Contrary to a popular belief, both of the above are easily possible, in Haskell98."