Hugs (Version Nov 2002) cannot handle the following function definition: f :: Ord a => Int -> [a] -> [a] f 0 xs = xs f _ [] = [] f n (x:y:zs) | x > y = y : (f (n - 1) x:zs) | otherwise = x : (f (n - 1) y:zs) Hugs generates the message: ERROR "C:\Program Files\Hugs98\Henk-Jan\error.hs":2 - Inferred type is not general enough *** Expression : f *** Expected type : Ord a => Int -> [a] -> [a] *** Inferred type : Ord [a] => Int -> [[a]] -> [[a]] It seems to me that this is a bug in the inferrence mechanism. Henk-Jan. --
You should check your code before you accuse the type checker! Maybe you're missing some parentheses ... :-). Juxtaposition binds tighter than ":" in Haskell. - Mark hjgtuyl@chello.nl wrote:
Hugs (Version Nov 2002) cannot handle the following function definition:
f :: Ord a => Int -> [a] -> [a] f 0 xs = xs f _ [] = [] f n (x:y:zs) | x > y = y : (f (n - 1) x:zs) | otherwise = x : (f (n - 1) y:zs)
Hugs generates the message:
ERROR "C:\Program Files\Hugs98\Henk-Jan\error.hs":2 - Inferred type is not general enough *** Expression : f *** Expected type : Ord a => Int -> [a] -> [a] *** Inferred type : Ord [a] => Int -> [[a]] -> [[a]]
It seems to me that this is a bug in the inferrence mechanism.
Henk-Jan.
participants (2)
-
hjgtuyl@chello.nl -
Mark Tullsen