我想實現使用這種數據類型的函數treeToString:功能參數錯誤
datatype Tree = LEAF of string | NODE of Tree list;
和樹:
val L1a = LEAF "a"
val L1b = LEAF "b"
val L1c = LEAF "c"
val L2a = NODE [L1a, L1b, L1c]
val L2b = NODE [L1b, L1c, L1a]
val L3 = NODE [L2a, L2b, L1a, L1b]
val L4 = NODE [L1c, L1b, L3]
val L5 = NODE [L4]
該函數的參數一樣treeToString L5
這將輸出字符串((cb((abc)(bca)ab)))
問題是我找不出正確的方式來區分當功能需要一個LEAF或NODE類型。我寫了下面的代碼來嘗試和測試,但我得到的錯誤。任何人都知道的語法,以使其發揮作用?一旦我得到參數,實際的遞歸應該很容易。
(* treeToString *)
fun treeToString(LEAF str) = str
| treeToString(NODE h::t) =
h;