【发布时间】:2014-03-31 05:49:56
【问题描述】:
我正在尝试实现一个使用此数据类型的函数 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;
【问题讨论】: