【发布时间】:2015-11-02 10:42:17
【问题描述】:
我正在尝试使用 SML 进行编码并遇到下面列出的问题 我制作了一个 N-Ary 树,变量 tr 存储创建的树的值。
val tr =node([leaf "x", node([leaf "y", leaf "x" , leaf "z"])]);
函数 cat 是我希望打印所有叶节点的值。 但我收到了一个非详尽的搜索警告,但它不起作用。
fun cat (node ( [node t1 , node t2])) = cat(node t1) ^" "^cat(node t2)
| cat ( node ([leaf x, node t1])) = x ^" "^cat(node t1)
| cat( leaf x) = x
这是我的 n 叉树数据结构
datatype
'a ntree = leaf of 'a | node of 'a ntree list;
错误是get如下
`val tr = node [leaf "x",node [leaf "y",leaf "x",leaf "z"]] : string ntree
.\printValues.sml:14.5-16.20 Warning: match nonexhaustive
node (node t1 :: node t2 :: nil) => ...
node (leaf x :: node t1 :: nil) => ...
leaf x => ...
val cat = fn : string ntree -> string
- cat(tr);
uncaught exception Match [nonexhaustive match failure]
raised at: .\printValues.sml:16.20`
`
我该如何解决这个问题?相反,请指出如何继续调试。
【问题讨论】: