|
[ ghc-Bugs-1231273 ] confusing error: msg#00091lang.haskell.glasgow.bugs
Bugs item #1231273, was opened at 2005-07-01 17:01 Message generated for change (Comment added) made by pimlott You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=108032&aid=1231273&group_id=8032 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Compiler (Type checker) Group: None Status: Closed Resolution: Fixed Priority: 5 Submitted By: Andrew Pimlott (pimlott) Assigned to: Simon Peyton Jones (simonpj) Summary: confusing error Initial Comment: I got a perplexing error message. Here is a concise example: t = ((\Just x -> x) :: Maybe a -> a) (Just 1) Try.hs:1:6: Couldn't match the rigid variable `a' against `t -> t1' `a' is bound by the polymorphic type `forall a. Maybe a -> a' at Try.hs:1:5-34 Expected type: a Inferred type: t -> t1 In the expression: (\ Just x -> x) :: Maybe a -> a In the definition of `t': t = ((\ Just x -> x) :: Maybe a -> a) (Just 1) Failed, modules loaded: none. It seems to be telling me that the whole expression "(Just x -> x) :: Maybe a -> a" was expected to have type a, in contradiction to the explicit type annotation it prints out! In the context of a larger program, this threw me for a loop. I would have expected Expected type: Maybe -> a Inferred type: Maybe -> t -> t1 Even better, if I change the code, I get a helpful diagnostic: t = (\Just x -> x) (Just 1) Try.hs:1:6: Constructor `Just' should have 1 argument, but has been given 0 When checking the pattern: Just In a lambda abstraction: \ Just x -> x In the definition of `t': t = (\ Just x -> x) (Just 1) Failed, modules loaded: none. Could I get that error in the first example? You could probably go even further: "(did you forget parentheses around the pattern?)". ---------------------------------------------------------------------- >Comment By: Andrew Pimlott (pimlott) Date: 2005-07-14 16:45 Message: Logged In: YES user_id=498741 That's excellent. In fact, I look forward to making this mistake in the future. ---------------------------------------------------------------------- Comment By: Simon Peyton Jones (simonpj) Date: 2005-07-11 05:52 Message: Logged In: YES user_id=50165 Good bug report. I've improved the message a lot: tcfail140.hs:16:6: The lambda expression `\ Just x -> ...' has two argumentss, but its type `Maybe a -> a' has only one In the expression: (\ Just x -> x) :: Maybe a -> a In the definition of `t': t = ((\ Just x -> x) :: Maybe a -> a) (Just 1) test is tcfail140 Simon ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=108032&aid=1231273&group_id=8032
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | [ ghc-Bugs-1234239 ] Bad location for violation of functional dependency, SourceForge.net |
|---|---|
| Next by Date: | GHC bugs, Simon Marlow |
| Previous by Thread: | [ ghc-Bugs-1231273 ] confusing error, SourceForge.net |
| Next by Thread: | [ ghc-Bugs-1231648 ] compiler panic when class name is used as a type, SourceForge.net |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |