QuantifiedConstraints fails to deduce trivial constraint
While experimenting with quantified constraints, I find I need to explicitly specify a quantified constraint in an instance declaration that I think should be deduced automatically. When I leave it out, GHC complains that it cannot deduce Num (f a)
in the code below.
The full source code is attached. The relevant lines are
instance ( Functor f, Dom f ~ NFun, Cod f ~ NFun
, forall a. Ok NFun a => Num a -- I don't want to write this constraint
) => Functor (NIdF f) where
type Dom (NIdF f) = Dom f
type Cod (NIdF f) = Cod f
fmap f = NFun \(NIdF xs) -> NIdF (neval (fmap f) xs)
where the line marked "I don't want to write ..." points to the constraint I don't want to have to write manually. The definition of the NFun
is
instance Category NFun where
type Ok NFun a = Num a
id = NFun P.id
NFun g . NFun f = NFun (g P.. f)
Note that the constraint in question does not involve the type NIdF
for which the instance is declared – it is a generic condition that is always true, given the instance declaration of NFun
(see the definition of Ok
there).
Trac metadata
Trac field | Value |
---|---|
Version | 8.6.3 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |