|
现在,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中的后续传递风格,转载需保留来源!
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。