问题标签 [anonymous-recursion]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
recursion - Scheme中匿名函数调用自身的机制?
我正在阅读The Little Schemer并对以下代码感到困惑:
代码是判断空列表,否则永远不会停止。
为什么“ len
”不是递归?
recursion - Little Schemer:编写只支持长度≤2的列表的函数
在The little schemer一书中,我们发现这个函数只支持长度小于或等于1的列表:
我想逐步学习,并想编写仅支持长度小于或等于2的列表的类似函数。
请不要通过提供如下代码来回答这个问题:
因为这个函数支持任意长度。
而且我已经知道如何编写这样的函数:
实现我的目标。但是这段代码距离第一个代码片段不止一步。
也许,我不应该改变:
recursion - Little Schemer:为什么将 (mk-length mk-length) 包装成一个函数?
在The Little Schemer book的第 9 章中,在为任意长输入构建length
函数时,建议如下(在第 170-171 页),在以下代码片段中(来自第 168 页本身):
part (mk-length mk-length)
, 将永远不会返回,并将无限地应用于自身:
因为我们只是
mk-length
一次又一次地向自己申请......
和
但是现在我们已经
(mk-length mk-length)
从使它length
不再返回函数的函数中提取出来了。
现在,为了解决这个问题,本书建议:
将
mk-length
我们最后一个正确版本 of 中 to 自身的应用length
变成一个函数。
就像,所以:
我感到困惑的是:
如果
(mk-length mk-length)
不返回函数
我们如何将结果应用
/li>(mk-length mk-length)
到某个东西上,就好像它是一个函数一样?包装
/li>(mk-length mk-length)
成函数如何解决“永不返回”(即无限递归)问题?我的理解是,在:
x
只会被传递给永远不会返回的无限递归函数。
ocaml - 哪些编程语言支持将自身作为参数的函数?
我正在做学术练习(为了个人成长)。我想找到允许您定义能够接受自身(即指向自身的指针)作为参数的函数的编程语言。
例如,在 JavaScript 中:
上面的代码将在y达到零之前恰好执行foo() 11 次,从而导致递归终止。
我尝试在 OCaml 中定义一个类似的函数,如下所示:
但它因类型错误而失败:
我想知道,是否可以在 OCaml 中定义这样的函数?我对 OCaml 特别感兴趣,因为我知道它有一个全局类型推断系统。我想知道这些函数是否与全局类型推断兼容。因此,我正在寻找具有全局类型推断的任何语言中这些类型的函数的示例。
lambda - 在一个函数中生成幂集,没有显式递归,并且只使用 Racket 中最简单的原语
注意:这是家庭作业的奖励,但我花了太长时间尝试无济于事。非常感谢帮助,但我想没有必要。
前提:
为数字列表生成一个幂集,但不使用任何帮助器、显式递归、循环或除cons
、first
、rest
、empty?
、empty
、else
、lambda
和之外的函数/常量cond
,而仅define
在语言级别使用一个Intermediate Student with Lambda
。幂集的顺序无关紧要。
到目前为止我所尝试的:
感谢这篇文章,我发现了 Y-combinator 和匿名递归(作者的最终目标相同,但我们有不同的方法,所以他的帖子中的信息不能解决我的问题),以及这个答案powerset
中的代码,并且我写了以下内容:
我正在通过运行测试此代码:
此代码运行并产生正确的结果,但是,如您所见,我仍然依赖于外部辅助函数,combine
并且我不知道如何将其转换为 a,lambda
因为据我所知,Y-combinator 仅适用于一个参数和combine
需求 2. 也许我对这个问题的逻辑或方法有缺陷。我的经验有限,lambda
所以我也可能缺少知识。
我需要帮助:关于下一步的任何建议,帮助我combine
融入powerset
,提供提示/线索以纠正逻辑/方法,或解决方案将不胜感激。
提前致谢!
parameters - 计划中的按需调用
我有这段代码知道参数是通过需要使用调用传递的:
我觉得我错过了一些东西,但是在需要调用foo
这个对象 as的调用中f
,它会计算f
一次,然后永远不会更新res
and n
。这个对吗?我错过了什么吗?
谢谢你。
recursion - 是否可以在球拍中创建匿名递归函数
如果我有这样的递归函数:
我怎样才能制作它的 lambda 版本并且从不给它命名?...就像我想在某处内联它一样。那可能吗?(我的意思是在这种情况下我可以使用 fold - 所以这个例子可能不是那么好) - 是否有某种我无法找到的“自我”符号或占位符?或者你只需要给它一个名字。