【发布时间】:2022-01-05 06:32:23
【问题描述】:
我正在尝试遍历多路树,并像 List.map 那样映射它的值。
这是我的尝试
type 'a tree = Node of 'a * ('a tree list);;
let tree_map f t =
let rec aux acc tr =
match tr with
| Node(v, []) -> Node(f v, []) :: acc
| Node(v, sub) -> let r = List.fold_left aux acc sub in Node(f v, r) :: acc
in aux [] t
;;
let t = Node (1, [Node (2, [Node (1, [])]);
Node (3, []);
Node (1, [Node (5, []);
Node (2, [])])]);;
;;
let res = tree_map (succ) t;;
我尝试了来自this 答案的建议。未能成功实施。
我的函数返回这个显然是不正确的
val res : int tree list =
[Node (2,
[Node (2,
[Node (3, []); Node (6, []); Node (4, []); Node (3, [Node (2, [])])]);
Node (4, []); Node (3, [Node (2, [])])])]
有什么问题?
【问题讨论】:
标签: ocaml