【发布时间】:2020-04-06 10:20:45
【问题描述】:
假设我有以下树类型:
type T<'a> = N of 'a * T<'a> list
如何为它声明一个递归映射函数?目前我有这个,但它是一个无限循环:
let rec map f (N(a,sbs)) =
match sbs with
| [] -> N(f a,[])
| sbs' -> map f (N(a,sbs'))
不胜感激。
【问题讨论】:
-
当定义看起来是一个列表时,为什么你称它为树类型?答案中的好提示:使用带有累加器的辅助函数。
-
它是一种树类型,具有可变数量的子树。无论如何,我得到了答案。
-
我明白了,所以
sbs就像subtrees(或children)。猜猜我习惯于使用更长名称的更大(更多人)代码库。