2

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

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´

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

4

1 回答 1

3

您在类型名称 ( IntTree) 上进行模式匹配,而不是在类型构造函数 ( InternalNode) 上进行模式匹配。像这样的东西应该工作:

size (InternalNode a int b) = (size a) + 13 + (size b)
于 2013-11-03T13:39:41.377 回答