method definitions fail to refer to method-context classes
Sorry in advance if this is my lack of understanding...[[BR]] The following code fails:[[BR]]
class Cfoo a where
f :: Int -> a -> Int
data Foo = F Int
instance Cfoo Foo where
f m (F n) = m + n
data Bar = B Int
class Cbar a where
g :: (Cfoo b) => a -> b
instance Cbar Bar where
g (B m) = F m
with error:[[BR]]
Couldn't match expected type `b' against inferred type `Foo'
`b' is a rigid type variable bound by
the type signature for `g' at [...]
In the expression: F m
In the definition of `g': g (B m) = F m
In the instance declaration for `Cbar Bar'
It's as if the "instance Cfoo Foo" statement is ignored when processing "instance CBar Bar"
Trac metadata
Trac field | Value |
---|---|
Version | 6.12.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler (Type checker) |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |