2013-05-15 48 views
0

这里是我的代码:大小的树,而不是在范围

data Binary_Tree a = Null 
         |Node {element :: a, left_tree, right_tree :: Binary_Tree a} 
    deriving (Show, Eq) 

--depth_of_tree 

dot :: Integral b => Binary_Tree a -> b 
dot Null = 0 
dot Node (a left right) = 1 + (dot Node (a left right)) + (dot Node (a left right)) 

然而,当我加载它在ghci中它,并输入

dot Node (2 (Node 3 Null Null) Null) 

它出来一个错误:

<interactive>:13:1: 
    Not in scope: `dot' 
    Perhaps you meant `not' (imported from Prelude) 

任何人都喜欢告诉我我的代码有什么问题吗?

感谢任何人谁可以很好我一些建议XD

回答

1

1)申报错误(代码包含无限递归)。试试这个:

--depth_of_tree 
dot :: Integral b => Binary_Tree a -> b 
dot Null = 0 
dot (Node _ left right) = 1 + dot left + dot right 

2)带圆括号的错误。试试这个

dot $ Node 2 (Node 3 Null Null) Null