示例:JavaScript中的后续传递风格

  现在,CPS作为非阻塞式(通常是分布式的)系统的编程风格而被再次发掘出来。

  我对CPS很有好感,因为它是我获取博士学位的一个秘密武器。它十有八九帮我消减掉了一两年的时间和一些难以估量的痛苦。

  本文介绍了CPS所扮演的两种角色作为JavaScript中的一种非阻塞编程风格,以及作为一种功能性语言的中间形式(简要介绍)。

  内容包括:

  ◆JavaScript中的CPS

  ◆CPS用于Ajax编程

  ◆用在非阻塞式编程(node.js)中的CPS

  ◆CPS用于分布式编程

  ◆如何使用CPS来实现异常

  ◆极简Lisp的一个CPS转换器

  ◆如何用Lisp实现call/cc

  ◆如何用JavaScript实现call/cc

  请往下阅读以了解更多内容。

  什么是持续传送风格?

  如果一种语言支持后续(continuation)的话,编程者就可以添加诸如异常、回溯、线程以及构造函数一类的控制构造。

  可惜的是,许多关于后续的解释(我的也包括在内)给人的感觉是含糊不清,令人难以满意。

  后续传递风格是那么的基础。

  后续传递风格赋予了后续在代码方面的意义。

  更妙的是,编程者可以自我发掘出后续传递风格来,如果其受限于下面这样的一个约束的话:

  没有过程被允许返回到它的调用者中永远如此。

  存在的一个启示使得以这种风格编程成为可能:

  过程可以在它们返回值时调用一个回调方法。

  当一个过程(procedure)准备要返回到它的调用者中时,它在返回值时调用当前后续(current continuation)这一回调方法(由它的调用者提供)

  一个后续是一个初始类型(first-class)返回点。

  例子:标识函数

  考虑这个正常写法的标识函数:

function id(x) {
return x ;
}

it知识库示例:JavaScript中的后续传递风格,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。