[GHC] #10675: GHC does not check the functional dependency consistency condition correctly
GHC
ghc-devs at haskell.org
Thu Apr 13 20:35:48 UTC 2017
#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 diatchki):
Hello,
I just saw this, sorry for the very late reply.
I don't think that the original example technically violates the FD
property as the second instance (the one with `C Char ...`) is vacuous and
doesn't actually add any new instances to `C` (there is no base case).
The first instances on its own is OK, so the whole program is OK. I am
not sure that this is any easy thing to spot in general though.
There is, however, a real problem with the consistency checking of FDs
though, as illustrated by the following example:
{{{
class F tag a b | a -> b
class G a b | a -> b
class H a b | a -> b
instance G a b => F Int [a] [b]
instance H a b => F Char [a] [b]
instance G Int Int
instance H Int Char
}}}
These instances are accepted by GHC 8.0.1 but are inconsistent, because we
can derive both `F Int [Int] [Int]` and `F Char [Int] [Char]` which
violates the FD on `F`.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10675#comment:12>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list