[GHC] #6134: Incorrect ambiguity error with functional dependencies
GHC
cvs-ghc at haskell.org
Wed May 30 01:29:06 CEST 2012
#6134: Incorrect ambiguity error with functional dependencies
---------------------------------------+------------------------------------
Reporter: diatchki | Owner:
Type: bug | Status: new
Priority: normal | Component: Compiler (Type checker)
Version: 7.4.1 | Keywords:
Os: Unknown/Multiple | Architecture: Unknown/Multiple
Failure: GHC rejects valid program | Testcase:
Blockedby: | Blocking:
Related: |
---------------------------------------+------------------------------------
GHC reject a program as ambiguous when it is not. Consider the following
example:
{{{
{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies,
FlexibleContexts #-}
class C a b | a -> b where
f :: a -> b
test :: (Show a, C Int a) => Bool
test = show (f (1 :: Int)) == "1"
}}}
GHC rejects the program with the following error:
{{{
Ambiguous constraint `C Int a'
At least one of the forall'd type variables mentioned by the
constraint
must be reachable from the type after the '=>'
In the type signature for `test': test :: (Show a, C Int a) => Bool
}}}
The only variable, {{{a}}}, is fully determined by the type `Int` via the
functional dependency on class `C` so there is no ambiguity.
These sort of errors crop up when we desugar implicit parameters into uses
of the `IP` class (which has a functional dependency).
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/6134>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the Glasgow-haskell-bugs
mailing list