我已经阅读了很多关于如何将 call/cc 转换为等效的 CPS 样式的文章,并且已经了解了基本知识,但目前我不明白球拍如何通过 call/comp 执行转换(又名 call-with-composable-continuation)并卡住了这里。 我首先做的是尝试翻译这段代码:#lang rack ...
我已经阅读了很多关于如何将 call/cc 转换为等效的 CPS 样式的文章,并且已经了解了基本知识,但目前我不明白球拍如何通过 call/comp 执行转换(又名 call-with-composable-continuation)并卡住了这里。 我首先做的是尝试翻译这段代码:#lang rack ...
观看此视频 (11:56) 它显示了将列表中包含的数字相乘的递归过程这个想法是,如果列表包含零,则可以丢弃整个递归调用堆栈并返回 0 所以为了节省一些乘法它通过提前退出带有定界延续的过程来实现我想在 Guile 方案中重现它,我写了这段代码 它正确地相乘,但如果我传递一个包含零的列表并跟踪这样的调用 ...
试图用 Guile 方案理解定界延续多亏了这个视频,我设法掌握了香草 conts(电话/抄送)(太棒了) 现在我想转到分隔的 conts 我有这个用 call/cc 提前退出的最小例子 好的,我可以运行它,我明白它的作用如何使用 shift 和 reset 编写一段与此代码等效的代码? ...
以下是使用定界延续(重置/移位)的简单示例: 它运作良好。 但是,我想将延续k提取为纯 function 以供将来使用,而不仅仅是在 shift 中调用它。 例如,我希望test2可以返回k : 但 GHC 抱怨: 任何人都可以帮助我解决这个问题吗? 谢谢。 ...
我在这里找到了 Haskell 中的移位重置分隔延续的示例: 这将: 执行alfa bravo 执行charlie 将x绑定到 1,从而执行zulu 1 从resetT的末尾掉下来,然后跳回到esc 1之后执行delta 将x绑定到 2,从而执行zulu 2 从resetT的末尾掉下来,然后跳回 ...
我在这里有一个以下的 Koka 片段,我希望有人能解释调用处理程序时堆栈框架会发生什么。 我试图通过打印值和全局计数器使处理程序堆栈帧也可见,并且我在表达时脱糖了。 结果如下: 两个“FOO_CTRL”处理程序帧现在如何位于原始 FN() 调用和 RET 处理程序之下? ...
我不确定我是否理解分隔继续运算符对prompt/control和reset/shift之间的区别。 我了解一些基本的使用示例,但在这些示例中,它们的行为是相同的。 我在 Dariusz Biernacki 和 Olivier Danvy 的“ On the Dynamic Extent of De ...
这是困难的一个。 我一直在尝试编写各种 monad,这是我在任何地方都找不到简洁示例的唯一一个,因此我尝试使用此测试套件(JS) 和此问题(Agda) 作为参考编写自己的shift和reset . 特别是, 我遇到的问题是,当我通过多个reset测试中止时,我的实现失败了: // ...
在 1990 年代和 2000 年代,编程语言爱好者几乎没有讨论过定界延续的话题。 它最近重新成为编程语言讨论中的重要内容。 我希望有人至少可以权威地说明 Rakudo 的延续(与 Raku 相比)是否具有下面列出的六个特征中的每一个。 我多说一点关于列表之后我希望得到的那种答案。 从在线消息[1 ...
我研究定界的延续,并且目前正在将其丢弃以达到类似于引发异常的效果。 这是导致我麻烦的原因: const structure = type => cons => { const f = (f, args) => ({["run" + type]: f, [S ...
我研究了Oleg的定界延续教程 : 由于延续基本上是功能,而reset / shift甚至都不是monad api的一部分,我想知道如何在没有newtype和monad机制的情况下实现定界的延续。 到目前为止,这是我想出的: 我很确定这是错误的,如果不是,我不知道如何正确应 ...
我正在尝试了解定界的延续,并且正在阅读本文: http://community.schemewiki.org/?composable-continuations-tutorial 我发现此重置/移位转换 例如,我尝试对此表达式进行转换(我认为append-map来自Racke ...
Kotlin有一个包裹用于延续 ,但它被标记为实验性的。 除了API之外没有其他文档,也没有我能找到的任何教程或示例。 有谁知道它是否已经可用? 它的用法是什么? ...
我看了一篇名为A Primer on Scheduling Fork-Join Parallelism with Work Stealing的论文 。 我想实现持续窃取,其中调用spawn后的其余代码有资格被盗。 这是论文的代码。 导入设计选择是为窃贼线程提供哪个分支。 使用图 ...
所以我在这里阅读了一篇关于并发工作窃取双端队列的论文: http ://open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3872.pdf。 他们提到了“Child-Stealing vs Continuation Stealing”,他们说child-st ...
我想知道一种原生支持分隔延续的编程语言。 我知道Scala曾经有过shift和reset ,但是那些被删除了; 而且我也知道Seaside似乎有类似的东西,但Seaside是一个图书馆,据我所知,Smalltalk不支持分隔的延续。 那么,是否有支持这种延续的编程语言? 谢谢! ...
我遇到了一些我无法理解的东西。 到现在为止还挺好; (* 10 [])的延续存储在cc ,如果我们调用(cc 100)我们会按预期在REPL中看到1000 。 但我接下来尝试的是将变量定义为运行延续的结果: 我在REPL中看到200是结果,但x没有定义。 存储在cc ...
我试图在本教程后继续理解延续。 但是,我很难理解2.10节中的以下示例: 我认为state是int类型。 我没有得到的是k的类型。 根据我的理解, k捕获随后在get ()之后的所有计算,并且因为我们讨论的是状态monad,所以k是合理的,表示将通过取一个int继续的计算,因此 ...
在尝试为ContT monad变换器构建一些直觉时,我(也许不出所料)发现自己很困惑。 问题在于shiftT操作似乎没有做任何有用的事情。 首先是一个如何使用它的简单例子 famr a可能是一些更复杂的表达,只要它返回一些mr 。 现在试图解释我对shiftT的直觉并没有增加任 ...
我在球拍中展示了foldr两个幼稚的实现 第一个缺少适当的尾调用并且对于xs大值是有问题的 第二个使用带有延续的辅助函数来实现适当的尾调用,使其可安全地用于较大的xs值 看着racket/control我看到球拍支持一流的延续。 我想知道使用shift和reset表达foldr的第二个实现是 ...