Why isn't the last line of this code allowed?
f :: (TestClass a) => a -> Integer
f = const 1
a = (f,f)
g = fst a
The only thing I can think about is monomorphism
restriction, but it's allowed (...)

(...) The reason is that a has type
a :: (TestClass a, TestClass b) => (a,b)
and then when we take 'fst' of this value (as in g) we get

g :: (TestClass a, TestClass b) => a
which is an ambiguous type, (...)

Is there some version (i.e., set of extensions) of
Haskell where this would be allowed?

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to