首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个callcc示例是如何工作的?

这个callcc示例是如何工作的?
EN

Stack Overflow用户
提问于 2010-05-14 00:41:47
回答 1查看 325关注 0票数 0

(callcc (fun k -> k 7)) + 3

(callcc (fun k -> 7)) + 3

其中每一项的评估结果是什么?为什么?

EN

回答 1

Stack Overflow用户

发布于 2010-05-14 02:17:49

我猜这是家庭作业。如果不是,就说出来,我会直接告诉你答案。

call/cc的工作方式是在它被调用的地方捕获continuation。对于这些示例来说,这意味着当您看到call/cc时,将整个调用替换为一个黑框,并查看剩下的内容:

代码语言:javascript
复制
(call/cc (fun k -> k 7)) + 3
=>
************************ + 3

因此,call/cc调用的结果就是+ 3。这个“接下来会发生什么”是call/cc打包并调用k*的东西。

您现在需要做的就是弄清楚使用值7调用k时会发生什么。

对于第二个示例,根本不调用k。由于您不会使用k做任何特殊的事情,所以您不应该期望call/cc会做任何特殊的事情。

注意:您给出的代码看起来像某种ML。我所知道的ML方言都没有call/cc,所以如果您的方言也没有,请尝试下载PLT Scheme来交互地使用它。语法并不难学。

*'continuation‘是一种稍微好一点的方式来表达“接下来会发生什么”,尽管也好不到哪里去。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2828582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档