二叉树映射

mapping over binary tree

这是我映射二叉树的函数

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

您似乎已经将功能应用程序切换过来了。 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)