
7 Jun
2007
7 Jun
'07
6:03 p.m.
Hello, I'm wondering why you can write
data FSet a = Show a => M (a -> Double)
a :: FSet Double a = M $ \x -> 0
and it works, but
type FSet a = Show a => (a -> Double)
a :: FSet Double a _ = 0
fails with
All of the type variables in the constraint `Show a' are already in scope (at least one must be universally quantified here) In the type synonym declaration for `FSet'
If I understood the GHC manual, this should work, as FSet a should be replaced in a, so a type signature would come:
a :: Show a => (a -> Double)
which is OK. Sorry if this is FAQ, but I did some searches and nothing came out. Thanks in advance, Emilio