[Haskell-cafe] ambiguous type variables at MPTC
Tom Schrijvers
Tom.Schrijvers at cs.kuleuven.be
Sun May 13 06:14:37 EDT 2007
> If f2 is legal, why if f3 illegal? For some usage site of f3, the
> constraint C String b might allow b to be resolved given whatever
> instances of C are in effect.
>
> Is there a motivation for these behaviors?
>
> Are these sorts of cases discussed in the CHR/FD paper that motivated
> the coverage condition (which I have yet to read)?
It should be possible to resolve the constraints from the types in the
signature. That rules out f1 and f3.
For f2, given a type for a, say Int, not just any odd instance for b will
do, say
instance C Int Bool
GHC says:
No instance for (C Int b)
arising from use of `f2' at Q.hs:30:6-9
Possible fix: add an instance declaration for (C Int b)
In the expression: f2 x
In the definition of `f': f x = f2 x
No, it has to be an instance for all possible types b:
instance C Int b
So, you can only call f2 with types a for which the instance C a b is
completely independent of b. There is no ambiguity.
Tom
--
Tom Schrijvers
Department of Computer Science
K.U. Leuven
Celestijnenlaan 200A
B-3001 Heverlee
Belgium
tel: +32 16 327544
e-mail: tom.schrijvers at cs.kuleuven.be
More information about the Haskell-Cafe
mailing list