please consider the following module:
module TypeTest where
import Data.Generics
class Data a => MyClass a where
special :: a -> a generic :: MyClass a => a -> a
generic = everywhere (mkT special)The general idea is to define traversals about data types not known in advance. The data types must implement a "special" transformation which is then automatically extended to a "generic" transformation.
The definition of "generic" is but an example. In reality, there might also be special2 and special3 beside "special", and "generic" might combine the three special transformations in some way.
The problem is this - the module doesn't compile.
TypeTest.hs:1:
Ambiguous type variable `b' in the top-level constraint:
`MyClass b' arising from use of `special' at TypeTest.hs:9I suppose the type of "mkT special" is ambiguous. But how can I change that? No type annotation or combination of type annotations seems to help.
Suggestions appreciated, -Stefan
_______________________________________________ Glasgow-haskell-users mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
