
3 Nov
2009
3 Nov
'09
7:20 p.m.
Am Dienstag 03 November 2009 19:28:55 schrieb Roland Zumkeller:
Hi,
Compiling
class WithT a where type T a
f :: T a -> a -> T a f = undefined
g x = f x 42
with -XTypeFamilies -fwarn-missing-signatures gives:
Inferred type: g :: forall a. (Num a) => T a -> T a
Adding
g :: Num a => T a -> T a
results in:
Couldn't match expected type `T a' against inferred type `T a1' In the first argument of `f', namely `x'
Is the inferred type not the right one? Is g typeable?
The type function T isn't injective (or, it isn't guaranteed to be), so there's no way to determine which type a to use for 42.
Best,
Roland