2014-10-02 86 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