拿这个例子的代码(忽略它是暂时效率极其低下)递归lambda表达式
let listToString (lst:list<'a>) = ;;' prettify fix
let rec inner (lst:list<'a>) buffer = ;;' prettify fix
match List.length lst with
| 0 -> buffer
| _ -> inner (List.tl lst) (buffer + ((List.hd lst).ToString()))
inner lst ""
这是我一直在F#跨越未来一个共同的模式,我需要有一个内部函数谁递归本身超过一些价值 - 我只需要这个函数一次,是否有任何可能从它内部调用一个lambda自我(一些魔术关键字或其他)?我想代码看起来像这样:
let listToString2 (lst:list<'a>) = ;;' prettify fix
(fun
(lst:list<'a>) buffer -> match List.length lst with ;;' prettify fix
| 0 -> buffer
| _ -> ##RECURSE## (List.tl lst) (buffer + ((List.hd lst).ToString()))
) lst ""
但正如你所期望的有没有办法指在自身内部匿名函数,在这里我把## RECURSE ##