callcc相关内容

Lua 中的 call/cc - 可能吗?

维基百科关于Continuation 的文章说: “在任何支持闭包的语言中,都可以以延续传递风格编写程序并手动实现 call/cc." 要么是真的,我需要知道怎么做,要么不是真的,该说法需要更正. 如果这是真的,请告诉我如何在 Lua 中实现 call/cc,因为我看不到. 我想如果 Lua 有 coroutine.clone 函数,我就可以手动实现 call/cc,如 此处. ..
发布时间:2021-12-30 20:48:46 其他开发

关于callCC的澄清

我的背景是Javascript,Python&一点Haskell.嗨,我是Scheme(1天大)的新手.我想了解下面2个代码段之间的区别. (define onePlus (lambda (v) (+ 1 v))) (onePlus 4) ; 5 使用CallCC (define anotherOnePlus 0) (+ 1 (call/cc (lambda (k) (set! ..
发布时间:2020-07-19 19:09:50 其他开发

带闭包的电话/抄送

Wikipedia 提到“在任何支持闭包和正确尾调用的语言中,都有可能以连续传递样式编写程序并手动实现call/cc." 例如在javascript中如何实现此功能?我知道javascript不会执行tco,但是假设堆栈空间不会用完 解决方案 无法在JavaScript中编写call/cc实现: JavaScript不符合“正确的尾部调用"的要求(不创建其他堆栈).但是,我认为 ..
发布时间:2020-07-19 19:09:43 前端开发

for-each内部的方案延续

我目前正在大学学习一门课程的Scheme,同时看着一些练习,我被这个特定的练习卡住了. 教授尚未回复我以前的邮件,因此我有更多机会在这里更快地收到答复. 给出此代码 (define (list-iter-cc lst) (call/cc (lambda (return) (for-each (lambda ( ..
发布时间:2020-07-19 19:09:33 其他开发

阴阳拼图是如何工作的?

我正在尝试掌握Scheme中call/cc的语义,并且续页上的Wikipedia页面以阴阳拼图为例: (let* ((yin ((lambda (cc) (display #\@) cc) (call-with-current-continuation (lambda (c) c)))) (yang ((lambda (cc) (displa ..
发布时间:2020-07-19 19:09:31 其他开发

什么是通话/抄送?

我已经尝试了几次以理解 continuations 和我具有Web编程和OOP的背景.我也了解6502的组装,并与Erlang有轻微的约定.但是,仍然无法绕过call/cc. 解决方案 看,我发现了这个继续传递对此主题的最佳描述. 以下是该文章的详细信息副本: 作者:Marijn Haverbeke 日期:2007年7月24日 Scheme的当前连续调用功能可以捕获计算, ..
发布时间:2020-07-19 19:09:28 其他开发

在Lua中拨打电话/抄送-可以吗?

Continuation 上的Wikipedia文章说: “在任何支持 closures 的语言中,都可以以连续传递样式编写程序并手动实现call/cc ." 要么是正确的,我需要知道如何做,要么是不正确的,并且该语句需要更正. 如果是这样,请告诉我如何在Lua中实现call/cc,因为我看不到如何. 我认为,如果Lua具有 下面的文本是可选的内容. P.S.:Lua的协同程序表 ..
发布时间:2020-05-04 06:29:06 其他开发

可以仅使用lambda和闭包来实现“以当前方式继续调用"吗?

有人知道call/cc是否可以仅用lambda和闭包实现吗? 似乎call/cc中断了程序的流程(就像一个异常),但是lambda和闭包无法做到这一点.因此,我认为call/cc不能通过lambda和闭包实现. 还有其他想法吗? 解决方案 这个问题不是特别清楚,因为“仅用lambda和闭包实现"到底是什么意思? 在任何情况下,都可以通过以连续传递样式.然后,可以通过扩展编 ..
发布时间:2020-05-02 04:16:06 其他开发

呼叫/cc和“确保"的语义包括:在Ruby中

到目前为止,我知道Ruby是唯一同时支持call/cc和try/catch/finally(写为begin/rescue/ensure/end块)的主流语言. 我不熟悉Ruby,但是我的直觉告诉我这两者之间可能存在冲突,因为call/cc允许任意控制流,而ensure则需要一定的控制流(某些代码路径必须在A中执行预定义的情况,即离开包含块). 那么,该语言是否存在任何冲突?如果是这样, ..
发布时间:2020-04-27 04:18:49 其他开发

延续和回调之间有什么区别?

我一直在浏览整个网络,寻找关于延续的启示,并且令人难以理解的是,最简单的解释如何能够如此完全混淆像我这样的JavaScript程序员。当大多数文章用Scheme中的代码解释延续或使用monad时,尤其如此。 现在我终于认为我已经理解了延续的本质我想知道是否我所知道的实际上是事实。如果我认为真实并非如此,那就是无知而不是启蒙。 所以,这就是我所知道的: 在几乎所有语言中,函数显式地 ..
发布时间:2019-01-23 21:27:41 前端开发

了解Haskell的callCC示例

我无法理解以前的问题的答案。我希望对下面的解释能澄清事情。以下示例来自 fpcomplete import Control.Monad.Trans.Class import Control.Monad.Trans.Cont main = flip runContT return $ do lift $ putStrLn“alpha” (k,num)>让f x = k(f,x ..
发布时间:2018-06-04 17:18:19 其他开发

如何解释Haskell中的callCC?

在Scheme中,执行从 call / cc 获得的延续有效地跳回到初始调用/ cc并恢复保存的调用堆栈。 我刚开始学习Haskell,并试图找出如何理解 callCC 。就理解Scheme的 call / cc 而言,试图理解 callCC 。 callCC 的实现是 callCC f = cont $ \h - > runCont(f(\ a - > cont $ \_- ..
发布时间:2018-06-04 15:30:04 其他开发

如何使callCC更具动态性?

我认为ContT的正确类型应该是 newtype ContT m a = ContT {runContT :: forall r。 (a - > m r) - > mr} 和其他控制操作符 shift :: Monad m => (全部(a→ContT m r)→ContT m r)→> ContT m a reset :: Monad m => Cont ..
发布时间:2018-06-04 15:12:43 其他开发

我只是没有得到延续!

我没有CS学位,我的背景是VB6 - > ASP - > ASP.NET / C# 。任何人都可以用简洁明了的方式解释它吗?解析方案 想象一下,如果程序中的每一行都是一个单独的函数。每个接受作为参数的下一行/函数来执行。 使用这个模型,你可以在任何线路上“暂停”执行,并在以后继续执行。你也可以做一些有创意的事情,比如暂时跳出执行堆栈来检索一个值,或者将当前的执行状态保存到数据库中以便稍后检 ..
发布时间:2018-04-18 15:23:51 其他开发

怎么能在C#5.0新功能的异步调用与/ cc的实施?

我一直在关注有关新的异步功能的新公告,将在C#5.0。我有过延续风格有基本的了解和转型的新的C#编译器对code像的埃里克利珀的帖子: 异步无效ArchiveDocuments(列表< URL>的URL) { 任务存档= NULL; 的for(int i = 0; I< urls.Count ++ I) { VAR文件=等待FetchAsync(网址[I]) ..
发布时间:2016-07-20 10:52:22 C#/.NET