Haskell树:数据构造函数不在范围内

时间:2013-11-03 13:26:22

标签: haskell tree scope

在某个程序中,我定义了以下数据结构:

data IntTree = EmptyTree | InternalNode IntTree Int IntTree 
           deriving (show)

并且还遵循以下功能:

size :: IntTree -> Int
size Empty         = 1
size (InternalNode IntTree int IntTree) = (size IntTree) + 13 + (size IntTree)

但是我收到以下错误(每个IntTree引用都会出现):

Not in scope data constructor: ´IntTree´

我在函数定义中犯了什么错误?

1 个答案:

答案 0 :(得分:3)

您是类型名称(IntTree)上的模式匹配,而应该在类型构造函数(InternalNode)上进行模式匹配。这样的事情应该有效:

size (InternalNode a int b) = (size a) + 13 + (size b)