
#8390: regression in handling of type variables in constraints on instances which do not appear in the instance head ----------------------------------------------+---------------------------- Reporter: aavogt | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.7 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: GHC rejects valid program | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: ----------------------------------------------+---------------------------- Changes (by goldfire): * status: closed => new * resolution: invalid => Comment: Though my head goes a little swimmy when I look at this for too long, I think the ambiguity checker in 7.7 is being overeager here. I can use the `Compose` instance for `Fun` without any type annotations, so therefore, its type is not ambiguous. It seems that the equality constraints on the `F` instance induce what are effectively functional dependencies. Once we know that the first parameter to `Fun` is `F`, we know that the next two must be `Int`. I'm still a little lost as to how to characterize this behavior, and I could understand an argument saying that the ambiguity checker should reject this code. But, we should then also admit that the ambiguity checker is somewhat liberal, rejecting more than is necessary. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8390#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler