[Haskell-beginners] type variables
haskell at phirho.com
Tue Aug 24 07:09:56 EDT 2010
I have a question about type variables.
The following works:
type XMLCallback a = (XMLTreeNode -> a -> [Int] -> [XMLTreeNode] -> a)
xmlTreeFold :: XMLCallback a -> a -> Maybe XMLTreeNode -> Maybe a
xmlTreeFold _ _ Nothing = Nothing
xmlTreeFold func acc (Just tree) =
Just (xmlTreeWalkerWithContext func acc tree  )
testFold :: XMLCallback [(XMLTreeNode, [Int], [XMLTreeNode])]
testFold node a is ns =
if (length is) > 1 then ((node, is, ns):a) else a
=> xmlTreeFold testFold  tree
But if I change the type declaration of 'testFold' to:
testFold :: XMLCallback a
it will not compile.
I thought that 'a' is a type /variable/ thus able to hold any type, for
example, but not limited to '[(XMLTreeNode, [Int], [XMLTreeNode])]'. Why
do I need to be that much more specific in the declaration for 'testFold'?
Especially since in the declaration of 'xmlTreeFold' the 'XMLCallback a'
is well received.
Thanks for any insights,
More information about the Beginners