
On Sat, Mar 10, 2012 at 10:28:43AM +0000, bahadýr altan wrote:
Hello everyone. I'm trying to write a code which works on binary trees. When I write code like this with a tree with empty nodes :
data Tree = Empty | Node Integer Tree Tree
function Node a (Node b Empty Empty) (Node c Empty Empty)
it works fine. But when I try to create a more generic code like this which could work with trees who don't have empty nodes in grandchild level :
function Node a (Node b Tree Tree) (Node c Tree Tree )
I get this error : Undefined data constructor "Tree"
Can you help me with creating more generic code please? Thanks
Hello, You defined a Tree as an Empty or a Node. So to build it, you can use only Empty or Node, which is what you do in your first function. In the second one however, you use Tree, which is the type, not the constructor. If you use them it will look like : function Node a (Node b t1 t2) (Node c t3 t4) where t1 = Empty t2 = Node d Empty Empty ... Adding the function signature before your function implementatio help sort things out for the parameters you need: t1, to t4, to a to c, etc Hope that helps. Adrien -- Adrien Haxaire www.adrienhaxaire.org | @adrienhaxaire