trampolines相关内容

MonoDevelop 设置修复“用完 2 型蹦床"错误

我们正在开发一款 iOS 应用.当我们在 PC 上测试应用程序时,一切正常,但当我们在 iPad/iPhone4 上运行它时,我们经常收到“Ran out of Trampolines type 2"错误消息和应用程序崩溃.最近几天我们一直在尝试找出原因/修复它并尝试了我们在网上找到的所有建议,但我们仍然没有取得任何进展.我们发现的唯一解决方案是来自讨论使用编译器设置调整蹦床设置的帖子/网页,如下 ..
发布时间:2022-01-23 15:31:09 其他开发

为什么 return/redo 在调用上下文中评估结果函数,但不评估块结果?

昨晚我了解了/redo 选项,当您从函数中 return 时.它允许您返回 另一个 函数,然后在调用站点调用该函数并从同一位置重新调用评估器 >>foo: func [a] [(print a) (return/redo (func [b] [print b + 10]))]>>富“你好"10你好20 尽管 foo 是一个只接受一个参数的函数,但它现在 就像一个接受两个参数的函数.否则,类似的 ..
发布时间:2022-01-19 15:10:46 其他开发

如何让蹦床适应连续传球风格?

这是一个右折叠的简单实现: const foldr = f =>acc =>([x, ...xs]) =>x === 未定义?ACC: f(x) (foldkr(f) (acc) (xs)); 这是非尾递归,因此我们不能应用蹦床.一种方法是使算法迭代并使用堆栈来模拟函数调用堆栈. 另一种方法是将递归转换为 CPS: const Cont = k =>({runCont: k});con ..

如何使用 TailCalls?

如果我理解正确,scala.util.control.TailCalls 可用于通过使用蹦床来避免非尾递归函数的堆栈溢出.API 中给出的示例很简单: import scala.util.control.TailCalls._def isEven(xs: List[Int]): TailRec[Boolean] =if (xs.isEmpty) done(true) else tailcall( ..
发布时间:2021-07-15 19:30:49 其他开发

如何理解 JavaScript 中的蹦床?

代码如下: function repeat(operation, num) {返回函数(){如果 (num 我读过trampoline是用来处理溢出问题的,所以函数不会一直调用自己和堆栈. 但是这个片段是如何运作的呢?尤其是trampoline 功能?while 究竟做了什么,它是如何实现目标的? 感谢您的帮助:) 解决方案 while 循环将一直运行,直到条件为假. ..
发布时间:2021-07-05 19:02:24 前端开发

如何在WinAPI挂钩中创建一个挂钩和蹦床函数

因此,我一直在学习挂钩和使用蹦床的概念,以绕过/执行WinAPI挂钩函数中的数据(在另一个可执行文件中,使用DLL注入).到目前为止,我知道如何使用程序集和C的混合物来制作它(蹦床和挂钩),但是我似乎不能仅使用C来做到这一点,因为我似乎缺少了一些东西.如果有人能告诉我我做错了什么以及如何解决它,我将不胜感激. 现在我的代码: #include unsigned ..
发布时间:2020-09-13 00:01:41 其他开发

如何为挂钩创建蹦床功能

我对挂钩很感兴趣,因此决定看看是否可以挂钩某些功能.我对使用绕道而行的库不感兴趣,因为我想拥有自己动手做的经验.通过在互联网上找到的一些资源,我能够创建以下代码.这是基本的,但是可以正常工作.但是,当钩住由多个线程调用的函数时,它被证明是极其不稳定的.如果几乎同时拨打两个电话,它将崩溃.经过一些研究,我认为我需要创建一个蹦床功能.找了几个小时,除了蹦床的一般描述之外,我什么都找不到.我找不到关于编 ..
发布时间:2020-07-11 19:05:01 C/C++开发

为什么返回/重做在调用上下文中评估结果函数,但不评估块结果?

昨晚我从函数中了解了有关return的/redo选项.它使您可以返回另一个函数,然后在调用站点上调用该函数,并从同一位置重新调用评估程序 >> foo: func [a] [(print a) (return/redo (func [b] [print b + 10]))] >> foo "Hello" 10 Hello 20 即使foo是仅接受一个参数的函数,现在其作用却类似于接受 ..
发布时间:2020-07-05 19:14:46 其他开发

在F#/Scala中优化相互递归的标准方法是什么?

这些语言不“本地"支持相互递归函数优化,因此我猜它一定是蹦床或循环.... heh ..重写)我错过了什么吗? 更新:似乎我确实对FSharp撒谎,但我只是没有看到在谷​​歌搜索时相互尾巴呼叫的例子 解决方案 首先,F#本机支持相互递归函数,因为它可以从.NET IL( MSDN ).但是,这有点棘手,并且可能不适用于.NET的某些替代实现(例如Compact Frameworks) ..
发布时间:2020-05-21 20:54:20 其他开发

MonoDevelop设置可修复"2型蹦床用完"错误

我们正在开发一个iOS应用.当我们在PC上测试该应用程序时,一切正常,但是当我们在iPad/iPhone4上运行该应用程序时,我们经常会收到"Ran out of Trampolines type 2"错误消息,并且该应用程序崩溃.最近几天,我们一直在尝试找出原因/解决问题,并尝试了所有在网上找到的建议,但我们仍然没有取得任何进展.我们发现的唯一解决方案是在帖子/网页上,讨论如何使用如下编译器设置 ..
发布时间:2020-05-11 22:29:55 其他开发

我如何跳出Lisp中的功能?

(通用)Lisp中是否可以跳转到另一个函数而不是调用另一个函数? 我的意思是,当前函数已损坏,并且调用了另一个函数,而没有跳回成千上万个函数,就好像我要确定自己是否完成了 tail调用优化,即使它不是最后一个. 我不确定是否要执行((fn x的返回)). 示例: (defun fn (x) (when x (princ x) (jump 'fn (cdr x))) ..

使用Lambda / Template / SFINAE自动尝试/捕获保护蹦床功能

我有100个蹦床功能。我想知道是否可以自动将每一个包装在try / catch块中。 请提前警告,这不是一个容易的问题。我将首先描述(简化)代码的问题,然后尝试在下面最好地回答它,所以读者可能会看到我在哪里。 Foo有一个函数指针表: EDIT :这是一个 C函数指针表。因此它可以接受 static W :: w 。 签名在这里: http://svn.python.org ..
发布时间:2016-10-24 12:49:44 C/C++开发

异常安全蹦床的设计模式

这个问题来自这里。然而,上一个问题的措辞非常严重(事实上是错误的),建议我从头再次询问。 我有一个C函数指针表。 / p> 一些C代码(我们称之为lib-X)有一个基本的构建块(我们称之为X对象)。每个X对象可以调用此表上的函数。 这些表函数通常具有不同的签名(请参阅typedefs 这里),尽管几个函数可能共享相同的签名。在表中有大约100个这些函数。 在C ++中,每个 ..
发布时间:2016-10-20 08:47:33 C/C++开发

什么是蹦床功能?

在工作中最近的讨论,有人提到了蹦床的功能。 我已经阅读维基百科的描述。这足以让的功能的总体思路,但我想一些更具体的。 你有code的简单片段将展示蹦床? 解决方案 还有如在维基百科中描述“蹦床”的LISP感: 用于在一些Lisp的实现,一 蹦床是一个循环,反复 调用thunk的返回功能。一个 单蹦床足以 前preSS的所有控制传输 程序;一个程序,前pressed是 ..
发布时间:2016-08-17 23:02:42 C/C++