2014-10-02 63 views
0

我有一个函数delete_data,它给我一个错误“Unbound value delete_data”,它是 “tree_map delete_data l”。我的删除函数创建一个新的树,其中b在每个节点中排除。作为家庭作业规则,我们不允许改变录制功能。有什么问题?函数中绑定的值OCaml

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);; 

回答

1

如果您想从自身内部引用它,则需要将函数声明为递归函数。将let delete_data t =更改为let rec delete_data t =

+1

我忘了指定,作为一项家庭作业规则,我们不允许将函数改为rec。无论如何,我找到了解决办法:让delete_data t = tree_map(fun(y',d') - > y')t,这是创建一个函数作为参数。 – Brian 2014-10-02 05:05:51