
#10675: GHC does not check the functional dependency consistency condition correctly -------------------------------------+------------------------------------- Reporter: simonpj | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.10.1 Resolution: | Keywords: FunDeps Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by AntC): Replying to [comment:15 simonpj]: Thanks Simon. I fear we're in danger of getting two separate issues confused. (I guess that comes with the territory.) On the narrow issue raised in the O.P.: * __If__ both instance decls are to be accepted, nevertheless, at sites where the first `C Bool` instance applies, `op True` should accept any `[alpha]` and return exactly type `[alpha]`. * Note that the `C Bool` instance meets the coverage conditions/doesn't need `UndecidableInstances`. * I'm saying: once the instance is selected, GHC should treat that use site as if that's the only instance. * So where your O.P. says "As a result [of accepting both instance decls], it'll use ''both'' instances for improvement.", I think that's just plain wrong. I don't see anything in the FDs-via-CHRs paper '''Definition 6''' (or in Mark Jones 2000 paper) to suggest attempting mutual improvement. The '''Consitency Condition''' is purely about validating instances. The bulk of your comment is on the different issue of whether those instances should be accepted together. I'll reply separately. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10675#comment:16 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler