假设我具有以下树类型:
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'))
我希望得到一个提示。
答案 0 :(得分:0)
这是一个提示。这是一个尾递归映射函数。
let mapTR f l =
let rec loop acc = function
| [] -> List.rev acc
| x::xs -> loop (f x::acc) xs
loop [] l