【问题标题】:How does this callcc example work?这个 callcc 示例是如何工作的?
【发布时间】:2010-05-13 16:41:46
【问题描述】:

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

每个都评估什么以及为什么?

【问题讨论】:

    标签: functional-programming callcc


    【解决方案1】:

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

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

    (call/cc (fun k -> k 7)) + 3
    =>
    ************************ + 3
    

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

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

    对于第二个示例,您根本不调用k。既然你没有对k 做任何特别的事情,你不应该期望call/cc 做任何特别的事情。


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

    *'continuation' 是一种更好的表达“接下来会发生什么”的方式,虽然不是更好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-03
      • 1970-01-01
      • 2014-07-20
      • 2016-01-21
      • 2019-12-12
      • 2019-06-15
      • 1970-01-01
      • 2013-08-02
      相关资源
      最近更新 更多