recursion - 返回 ML 中的递归函数

标签 recursion sml ml

如何在 ML 中返回递归函数?

据我所知,递归匿名函数不能返回,只能返回匿名函数 可以用作返回值(如果返回值是函数...)。

最佳答案

这是您想知道的示例吗?

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 尾递归。)

关于recursion - 返回 ML 中的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13462234/

相关文章:

javascript - Ember删除记录太多递归

list - 创建用于测试不同类型函数的测试框架

syntax - SML 语法 :  `val rec` and `fun` compared to each other

java - 如何用汉诺塔调用递归

python - RecursionError 组成 lambda

function - 标准 ML : Return different types

functional-programming - SML 中带有逻辑运算符的 foldr/foldl

type-inference - 机器学习中类型推断的局限性

types - 解决标准 ML 中输入歧义的上下文

c++ - 递归中的异常概率(8 皇后概率)