Recursion 在ML中返回递归函数
如何在ML中返回递归函数 据我所知,递归匿名函数不能返回,只能返回匿名函数Recursion 在ML中返回递归函数,recursion,sml,ml,Recursion,Sml,Ml,如何在ML中返回递归函数 据我所知,递归匿名函数不能返回,只能返回匿名函数 可以用作返回值(如果返回值是function…。这就是您想知道的示例吗 fun f n = let fun g k = if k = n then [] else k :: g (k-1) in g end 您只能通过命名来创建递归定义,但这不是问题,因为您可以在任何地方编写let表达式 更新更具体地回答评论: fun f g = let f
可以用作返回值(如果返回值是function…。这就是您想知道的示例吗
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
tail递归。)你能重新表述这个问题或举个例子吗?为什么你认为你不能返回一个递归函数?我想实现一个函数f:(int->int)->(int->int),它接收一个函数g作为参数并返回h,其中:h=$sum{I=0}^{I}g(I)$我试图使用“let”经过多次尝试,它仍然不能很好地工作。