"riz er" <[EMAIL PROTECTED]> writes:

> howMany :: Int -> Int -> Int -> Int
> howMany n1 n2 n3
>       | (n1 > a) && (n2 > a) && (n3 > a) = 3
>       | (n1 > a) && (n2 > a) = 2
>       | (n1 > a) && (n3 > a) = 2
>       | otherwise = 1
>         where a = (n1 + n2 + n3)/3

> i get an error message
> "Instance of Fractional Int required for definition of howMany"

The problem is that since Haskell knows that n1 et al is an Int, it
deduces that a must be an Int (since (>) compares values of the same
type).  Unfortunately, you're dividing with (/), which provides
fractional answers, and not necessarily integers, and certainly not
Ints. 

The easy way out is to consider a different division operator, but you
may want to consider the behaviour of your program in the obvious
borderline case.

-kzm
-- 
If I haven't seen further, it is by standing in the footprints of giants

_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to