2013-11-03 93 views
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´ 

我在函數定義中犯了什麼錯誤?

回答

3

您在類型名稱(IntTree)上進行模式匹配,而應該在類型構造函數(InternalNode)上進行模式匹配。像這樣的東西應該工作:

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

謝謝!我知道這是一個簡單的誤解。 –