On 1 Jan 2009, at 09:36, Max.cs wrote:
thanks!
suppose we have
> data Tree a = Leaf a | Branch (Tree a) (Tree a) deriving Show
and how I could define a function foo :: a -> Tree a that
foo a = Leaf a where a is not a type of Tree
foo b = b where b is one of the type of Tree (Leaf
or Branch) ?
The following code seems not working......
foo (Leaf a) = a
foo a = Leaf a
saying 'Couldn't match expected type `a' against inferred type
`Btree a'
Hi again Max,
I'm assuming this is continuing from the concatT example, and that
you're struggling with first function you must pass to foldTree.
Remember the type of the function – it's not a -> Tree a, but Tree a -
> Tree a, because your leaves in the parent tree all contain trees to
glue on at that point.
So, the function you want, is the function which looks at the
parameter it's given, goes "oh, that's interesting", does nothing to
it, and hands it back to replace the Leaf. I recommend searching
hoogle for functions of type a -> a, the function you're looking for
is built in.
Bob_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe