
#8634: Relax functional dependency coherence check ("liberal coverage condition") -------------------------------------+------------------------------------- Reporter: danilo2 | Owner: Type: feature | Status: new request | Milestone: 7.10.1 Priority: high | Version: 7.7 Component: Compiler | Keywords: Resolution: | Operating System: Unknown/Multiple Differential Revisions: Phab:D69 | Type of failure: None/Unknown Architecture: | Test Case: Unknown/Multiple | Blocking: Difficulty: Unknown | Blocked By: | Related Tickets: #1241, | #2247, #8356, #9103, #9227 | -------------------------------------+------------------------------------- Comment (by danilo2): I've got a single question related to this topic - lets assume I've got a simple code: {{{#!haskell {-# LANGUAGE NoMonomorphismRestriction #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE FunctionalDependencies #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE DysfunctionalDependencies #-} class CTest a b | a -> b where ctest :: a -> b data X = X instance Monad m => CTest X (m Int) where ctest _ = return 5 main = do let f = ctest X -- ... some code here print "end" }}} Is it possible in such example, that anything would break using the `-XDysfunctionalDependencies` (assuming, that all instances mention concrete types for `a`, like the one on the example, which mentions `X` in place of `a`)? This is the exact case we need to use it right now (of course very simplified). For now it works very well even for large examples. When such code "could" break and give us unpredictable results? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8634#comment:27 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler