Recursion 在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

如何在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
      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”经过多次尝试,它仍然不能很好地工作。