[Haskell-beginners] Type of function with constant pattern

Mike Meyer mwm at mired.org
Tue Apr 10 23:30:37 CEST 2012

On Tue, 10 Apr 2012 16:57:38 -0300
j.romildo at gmail.com wrote:

> Hello.
> Given the following function definitions
>    f 0 = True
>    g False = True
> ghc infers the following types for the functions:
>    f :: (Eq a, Num a) => a -> Bool
>    g :: Bool -> Bool
> Why f has "Eq a" in the context in ts type, and g does not?

Bool is an instance of Eq, so there's no need to say that your
(non-existent) type variable has that constraint.

Using a numeric constants means you get a type variable with the Num
constraint. Since Num doesn't imply Eq, that constraint is (as Tim
pointed out) required so the guard can be checked.

Mike Meyer <mwm at mired.org>		http://www.mired.org/
Independent Software developer/SCM consultant, email for more information.

O< ascii ribbon campaign - stop html mail - www.asciiribbon.org

More information about the Beginners mailing list