
#8634: Relax functional dependency coherence check ("liberal coverage condition") -------------------------------------+------------------------------------- Reporter: danilo2 | Owner: Type: feature request | Status: new Priority: high | Milestone: 7.12.1 Component: Compiler | Version: 7.7 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Blocked By: | Test Case: Related Tickets: #1241, #2247, | Blocking: #8356, #9103, #9227 | Differential Revisions: Phab:D69 -------------------------------------+------------------------------------- Comment (by rwbarton): Replying to [comment:59 atnnn]:
What is the status of this feature?
I ran into another case where it might be useful:
{{{#!hs {-# LANGUAGE FunctionalDependencies, FlexibleInstances, UndecidableInstances, ConstraintKinds, GADTs #-}
class F a | -> a instance (eq ~ (a ~ ()), eq) => F a }}}
I guess this is a reduction of some more non-trivial instance declaration? Otherwise one could just write `instance (a ~ ()) => F a`, and this is accepted by GHC.
GHC considers this illegal, but in practice it satisfies the functional dependency.
In principle it looks to be a bug that GHC does not accept your program already, and it would continue to be a bug even if `DysfunctionalDependencies` was added; but in practice obscure fundep- related bugs are not always fixed quickly. Still, I think you should probably file this as a separate ticket. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8634#comment:61 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler