在某个程序中,我定义了以下数据结构:
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´
我在函数定义中犯了什么错误?
答案 0 :(得分:3)
您是类型名称(IntTree
)上的模式匹配,而应该在类型构造函数(InternalNode
)上进行模式匹配。这样的事情应该有效:
size (InternalNode a int b) = (size a) + 13 + (size b)