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 "ERROR C:\My Documents\Haskell programming\question4.19.txt:4 - Instance of Fract ional Int required for definition of howMany" how could i resolved this ? _________________________________________________________________ Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp
"riz er"
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
participants (2)
-
Ketil Malde -
riz er