Functional programming 使用Ocaml中的fold函数将二叉树转换为列表
鉴于: 使用: 将二叉树转换为列表。 例如Functional programming 使用Ocaml中的fold函数将二叉树转换为列表,functional-programming,ocaml,binary-tree,fold,Functional Programming,Ocaml,Binary Tree,Fold,鉴于: 使用: 将二叉树转换为列表。 例如 tree2列出一些树给出了[1;2;3] 我的尝试: let someTree = Node (1,Node(2,Node(3,Empty,Empty),Empty),Empty) 它给出了错误: let tree2list tr = match tr with | Empty -> Empty | Node (x,l,r) -> (tree_fold (fun acc tree-> tree::acc) [] tr) 我
tree2列出一些树
给出了[1;2;3]
我的尝试:
let someTree = Node (1,Node(2,Node(3,Empty,Empty),Empty),Empty)
它给出了错误:
let tree2list tr = match tr with
| Empty -> Empty
| Node (x,l,r) -> (tree_fold (fun acc tree-> tree::acc) [] tr)
我已经做了好几个小时了,并且不断地犯类似的错误。任何帮助都将不胜感激,哪怕只是一个小小的暗示也会很好
谢谢。您应该传递到
树的函数接受三个参数,而您传递的函数只能接受两个参数。这就是编译器试图说的。当然,还有其他一些问题,但我希望你能解决它们
let someTree = Node (1,Node(2,Node(3,Empty,Empty),Empty),Empty)
let tree2list tr = match tr with
| Empty -> Empty
| Node (x,l,r) -> (tree_fold (fun acc tree-> tree::acc) [] tr)
This expression has type 'a list but an expression was expected of type 'b -> 'b .