这是我在二叉树上映射的函数
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 :(得分: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)