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

Benjamin Franksen benjamin.franksen at bessy.de
Fri Sep 7 16:26:48 EDT 2007


Dan Piponi wrote:
> On 9/5/07, Ketil Malde <ketil at ii.uib.no> wrote:
>> On Wed, 2007-09-05 at 08:19 +0100, Simon Peyton-Jones wrote:
>> Error message from GHCi:
>>     test/error.hs:2:8:
>>         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.
> 
> ghc --newbie-errors error.hs
> 
> . . .
> . . .
> 
> Error message from GHCi:
>     test/error.hs:2:8:
>         You have tried to apply the operator '+' to 'x' and 'show s'
>         'show s' is a String.
>         I don't know how to apply '+' to a String.
>         May I suggest either:
>         (1) '+' is a method of type class Num. Tell me how to apply
> '+' to a String by making String an instance of the class Num
>         (2) You didn't really mean '+'
>         In the expression: x + (show s)
>         In the definition of `f': f x s = x + (show s)

Splendid! And w/o the --newbie-errors drop the 'Possible fix:...'. In my
experience, it is either unnecessary (because it is obvious which instance
is missing) or (more often) misleading.

As to the first line of the message 'No instance for (Num String)': I
dislike the proposed 'String is not an instance of Num' for reasons already
mentioned by others (multi parameter classes). I suggest to make it even
shorter by directly quoting the missing syntax, i.e. 'Missing (instance Num
String)'.

Cheers
Ben



More information about the Haskell-Cafe mailing list