Type inferrence problem
Mark Tullsen
mtullsen@cse.ogi.edu
Sat, 26 Apr 2003 17:45:23 -0700
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.
>