[Haskell-cafe] Extending the idea of a general Num to other types?

Ketil Malde ketil at ii.uib.no
Wed Sep 5 04:16:20 EDT 2007

On Wed, 2007-09-05 at 08:19 +0100, Simon Peyton-Jones wrote:

> | confusing for new users to have the compiler suggest pointless things
> | like declaring an instance of Num String or whatever. 

This also gets my vote for the
"Error-message-most-likely-to-be-unhelpful"-award.  IME, this often
arises from incorrect use of operators or wrong number of parameters,
not missing instances.

> It's difficult to make error messages helpful.  

Certainly. But better to err on the side of brevity.

>         when you come across a case where GHC produces an
>         unhelpful message, send it in, along with the program
>         that produced it,

Contents of test/error.hs:
    f x s = x + show s

Error message from GHCi:
        No instance for (Num String)
          arising from use of `+' at test/error.hs:2:8-17
        Possible fix: add an instance declaration for (Num String)
        In the expression: x + (show s)
        In the definition of `f': f x s = x + (show s)

>         your suggestion for the error message you'd like to have seen.

As is, with removal the "Possible fix", as it is often misleading (i.e.
here, the programmer clearly meant to use '++' and not '+'.  Perhaps
rephrase to something like "String is not an instance of Num"?  For a
newbie, it may not be clear that Num is the class and String is the


More information about the Haskell-Cafe mailing list