我想实现使用这种数据类型的函数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;