2017-10-16 106 views
0

这是我的函数映射在二叉树映射在二叉树

type 'a btree = Empty 
      |Node of 'a * 'a btree * 'a btree 

let rec treemap t f = match t with 
    |Empty -> Empty 
    |Node(root,left,right)-> Node(root f, treemap left f, treemap right f)     

类型的功能必须是:

treemap: 'a btree -> ('a ->'b) -> 'b tree 

,但我的功能,而不是返回此类型:

val treemap : ('a -> 'b) btree -> 'a -> 'b btree 
+0

这将是最好的也给了'btree'类型构造在你的源代码,以方便他人回答,即使它可能找出它应该是什么。 – Mars

+0

我已经添加了类型构造函数 –

回答

3

您似乎已经获得了功能应用程序切换。 root f应该f root

let rec treemap t f = match t with 
    | Empty -> Empty 
    | Node (root, left, right) -> Node (f root, treemap left f, treemap right f)