On Thu, 2009-05-28 at 01:45 +0400, Bulat Ziganshin wrote: > for me, it was better than ghc errmsg. main thing is that i don't feel > automatically what is expected and what is inferred. here Hugs says > that True is Bool and the remaining is Int, so i "feel" the situation
I absolutely agree about expected/inferred. I always forget which is which, because I can figure both could apply to each. Say, in this simple example: > Prelude> let f = (+5) > Prelude> f "abc" > > <interactive>:1:2: > Couldn't match expected type `Integer' > against inferred type `[Char]' > In the first argument of `f', namely `"abc"' > In the expression: f "abc" > In the definition of `it': it = f "abc" Does expected mean that, based on the type signature, it should be an Integer, or based on the argument that I provided, it should be a String? The same goes for the inferred type: it knows what the type of the literal argument (String), so I would assume the inferred type was the type in the function's signature. Unfortunately, my reasoning in both cases can go the wrong way . . . Better language may be much more helpful, although I'm not sure what may be easier to interpret. Jeff Wheeler _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe