如何在ML中返回递归函数?
据我所知,递归匿名函数不能返回,只能匿名函数 可以用作返回值(如果返回值是函数...)。
答案 0 :(得分:3)
这会是你想知道的那种例子吗?
fun f n =
let
fun g k =
if k = n then [] else k :: g (k-1)
in
g
end
你只能通过命名来制作递归定义,但这不是问题,因为你可以在任何地方写一个let
表达式。
更新更具体地回答评论:
fun f g =
let
fun h 0 = g 0
| h i = h (i-1) + g i
in
h
end
(更有效的实现会使h
尾递归。)