我正在尝试运行一个函数 subst(tr, v1, v2) 返回一个新的 ntree,其中 v1 的所有值都被输出树中的 v2 替换。
datatype 'a ntree = leaf of 'a | node of 'a ntree list;
fun map(f, []) = [] | map(f,x::t)=f(x) :: map(f,t);
fun subst(leaf(d), v1, v2) = if d=v1 then v2 else d
| subst(node(q), v1, v2) = let fun w(k) =
if k=v1 then subst(v2, v1, v2) else subst(k, v1, v2)
in map(w, q)
end;
但我得到一个循环错误 b/c 我的 rhs of 子句不同意函数结果类型。我的表达式是 ''Z 列表,我的结果类型是 ''Z