映射二叉树

时间:2017-10-16 01:35:59

标签: ocaml higher-order-functions

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

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

1 个答案:

答案 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)
相关问题