我有一个函数delete_data,它给出了一个错误“Unbound value delete_data” “tree_map delete_data l”。我的删除功能创建了一个新树,其中b在每个节点中被排除。作为家庭作业规则,我们不允许将功能更改为rec。有什么问题?
type 'a tree = Empty | Node of 'a * 'a tree * 'a tree
let rec tree_map f t = match t with
| Empty -> Empty
| Node(n, l, r) -> Node(f n , (tree_map f l), (tree_map f r));;
let delete_data t = match t with
Empty -> Empty
| Node((a,b), l, r) -> Node(a, tree_map delete_data l, tree_map delete_data r);;
答案 0 :(得分:1)
如果要从内部引用它,则需要将函数声明为递归函数。将let delete_data t =
更改为let rec delete_data t =
。