2010-11-05 83 views
2

我仍然有這個問題,所以我可以去尋求更多的幫助。標準ML二叉樹

我們給出:

datatype which = STRING of string | INT of int 

第1部分。我們被告知,我們需要創建一個名爲whichTree包含類型的值二叉樹其它數據類型「的」,其中數據僅在的葉子樹。

我認爲這將是正確的答案:

datatype whichTree = Empty | Leaf of which | Node of whichTree*whichTree; 

事實證明,這是不是我跑的時候爲:

val inttree = Node(Leaf(1), Leaf(2)); 

我得到一個錯誤。

我能弄清楚,我可以做這樣的事情:

datatype 'a whichTree = Empty | Leaf of 'a | Node of 'a whichTree * 'a whichTree; 

datatype whichTree = Empty | Leaf of int | Node of whichTree*whichTree; 

但無論這些似乎正確的我,在我的第一個情況,我的數據類型名字有一個'在它和我的另一個我在說int的葉子,當我應該能夠指定字符串或int通過使用。

任何人都可以告訴我什麼是正確的答案或提供一些幫助嗎?

回答

4

你的whichTree定義是正確的,你只是缺少which構造在inttree

val inttree = Node(Leaf(INT 1), Leaf(INT 2)) 
+0

謝謝!那正是我正在尋找的。 – user494948 2010-11-05 03:44:31