[GHC] #7812: Ambiguity check too eager with unconstrained type variable
GHC
cvs-ghc at haskell.org
Fri Apr 5 13:35:58 CEST 2013
#7812: Ambiguity check too eager with unconstrained type variable
----------------------------------------+-----------------------------------
Reporter: goldfire | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler (Type checker) | Version: 7.7
Keywords: AmbiguityCheck | Os: Unknown/Multiple
Architecture: Unknown/Multiple | Failure: None/Unknown
Difficulty: Unknown | Testcase:
Blockedby: | Blocking:
Related: |
----------------------------------------+-----------------------------------
Changes (by simonpj):
* difficulty: => Unknown
Comment:
Unlike #7804, this one is by design. Suppose you said
{{{
bar :: SBool b -> [F b a]
bar = foo
}}}
You'd expect that to work, right? Same type signature! But it doesn't,
even in 7.6:
{{{
T7812.hs:17:7:
Couldn't match type `F b a' with `F b a0'
NB: `F' is a type function, and may not be injective
The type variable `a0' is ambiguous
Possible fix: add a type signature that fixes these type variable(s)
Expected type: SBool b -> [F b a]
Actual type: SBool b -> [F b a0]
In the expression: foo
In an equation for `bar': bar = foo
}}}
People complained about this, especially when they got an inferred type,
tried to add it as a type signature, and had the program rejected.
Your example is deeply strange too; if you put a singleton list you might
well be stuck. And you could just make your type signature polymorphic in
the list
{{{
foo :: SBool b -> [c]
}}}
In short, I can't see how to help here.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7812#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list