[Haskell-beginners] Type of function with constant pattern
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:
> 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