(callcc (fun k -> k 7)) + 3
(callcc (fun k -> 7)) + 3
这些中的每一个都评估什么以及为什么?
(callcc (fun k -> k 7)) + 3
(callcc (fun k -> 7)) + 3
这些中的每一个都评估什么以及为什么?
我想这是家庭作业。如果不是,就这么说,我会直接告诉你答案。
它的工作方式call/cc
是在它被调用的点捕获延续。对于这些示例,这意味着当您看到 时call/cc
,将整个调用替换为黑框,然后查看剩下的内容:
(call/cc (fun k -> k 7)) + 3
=>
************************ + 3
+ 3
调用结果也是如此call/cc
。这个“接下来会发生什么”是call/cc
打包并调用k
*.
你现在需要做的就是弄清楚你k
用值 7 调用会发生什么。
对于第二个示例,您根本不调用k
。由于您没有对 做任何特别的事情k
,因此您不应该期望call/cc
做任何特别的事情。
注意:您提供的代码看起来像是某种机器学习。我所知道的所有 ML 方言都没有call/cc
,所以如果您的方言也没有,请尝试下载PLT Scheme以交互方式使用它。语法并不难掌握。
*'continuation' 是一种更好的表达“接下来会发生什么”的方式,虽然不是更好。