#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 simo...@microsoft.com * 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 Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs