#4917: ghc7 does not equate type synonyms under RankNTypes
----------------------------------------+-----------------------------------
Reporter: kyagrd | Owner:
Type: bug | Status: merge
Priority: normal | Milestone:
Component: Compiler (Type checker) | Version: 7.0.1
Keywords: | Testcase:
typecheck/should_compile/T4917
Blockedby: | Difficulty:
Os: Linux | Blocking:
Architecture: x86_64 (amd64) | Failure: GHC rejects valid
program
----------------------------------------+-----------------------------------
Changes (by simonpj):
* status: new => merge
* testcase: => typecheck/should_compile/T4917
Old description:
> See the source at
>
> http://hpaste.org/43297/ghc7_problem_with_rankntypes_a
>
> It works on ghc6 but not on ghc 7
>
> The type error message is
>
> ghc7rankn.hs:23:20:
> Couldn't match expected type `forall a'1.
> x a'1 -> Const (Const b a') a'1'
> with actual type `forall a'1. x1 a'1 -> Const b a'1'
> Expected type: (forall a'1. x a'1 -> Const (Const b a') a'1)
> -> f x a
> -> Const (Const b a') a
> Actual type: (forall a'1. x1 a'1 -> Const b a'1)
> -> f1 x1 a1
> -> Const b a1
> In the first argument of `mcata', namely `f'
> In the first argument of `f', namely `(mcata f)'
New description:
See the source at
http://hpaste.org/43297/ghc7_problem_with_rankntypes_a
It works on ghc6 but not on ghc 7
The type error message is
{{{
ghc7rankn.hs:23:20:
Couldn't match expected type `forall a'1.
x a'1 -> Const (Const b a') a'1'
with actual type `forall a'1. x1 a'1 -> Const b a'1'
Expected type: (forall a'1. x a'1 -> Const (Const b a') a'1)
-> f x a
-> Const (Const b a') a
Actual type: (forall a'1. x1 a'1 -> Const b a'1)
-> f1 x1 a1
-> Const b a1
In the first argument of `mcata', namely `f'
In the first argument of `f', namely `(mcata f)'
}}}
--
Comment:
Very good point, thank you. Fixed by
{{{
Tue Jan 25 11:01:12 GMT 2011 [email protected]
* Fix Trac #4917: try a bit harder to unify on-the-fly
This is generally a modest improvement but, more important,
it fixes a "unify-under-forall" problem. See Note [Avoid deferring].
There's still a lurking unsatisfactory-ness in that we can't
defer arbitrary constraints that are trapped under a forall.
M ./compiler/typecheck/TcUnify.lhs -8 +28
}}}
Ian, please merge.
Simon
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/4917#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs