2014-10-02 4 views
0

나는 "unbound value delete_data"라는 오류를주는 delete_data 함수를 가지고 있는데,이 값은 "tree_map delete_data l"입니다. 내 삭제 기능은 각 노드에서 b가 제외 된 새 트리를 만듭니다. 숙제 규칙으로, 우리는 rec로 기능을 변경할 수 없습니다. 뭐가 문제 야?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