Am Freitag, 22. Juli 2005 14:58 schrieb Mads Lindstrøm: > Hi > > I am struggling with an ambiguity problem. I have the following code: > > foo :: Constr -> Int > > foo = numChildren . fromConstr > > > > numChildren :: (Data a) => a -> Int > > numChildren x = sum $ gmapQ (\_ -> 1) x > > which I thought would work, but the GHC-6.4 says: > > Ambiguous type variable `a' in the constraint: > > `Data a' arising from use of `numChildren' at AutoForm.hs:87:6-16 > > Probable fix: add a type signature that fixes these type variable(s) > > I cannot see why I need to add (Data a),
(Data a) is a context, not a type signature. I think, the problem is that fromConstr converts to a value of an unknown type which is converted by numChildren afterwards. The compiler cannot know which type it has to use for the intermediate value, i.e., which concrete implementation of numChildren and fromConstr it has to use. > [...] Best wishes, Wolfgang _______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell