我记得某期《程序员》在介绍 Lua 时说“Lua 的协同程序类似 Scheme 的延续,只是自由度更高。”。我认为这样的说法是欠妥的,因为事实上协同的能力比延续要弱。
首先来看下延续。理论上,延续是这样一种编程风格:对于每个函数,增加最后一个延续参数,所有的函数都不返回值,而把返回值作为参数传给延续参数。这样一来,建立延续标记的函数(如 call/cc)就可以获取调用路径中任何一个标记,并把它绑定到自己的参数函数的第一个参数上。看到 Scheme 的 call/cc,知道的人都会会心一笑,因为他古怪的标记绑定方法正是最初 lambda 演算隐藏掉所有的延续参数后的结果。实际上,延续为每个要标 ...
- 浏览: 213 次
- 性别:

- 来自: 江苏

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
为括号正名!
不好玩,一点也没有大腕台词那个爽劲儿。牵强。
-- by ajoo -
为括号正名!
我眼镜早就散光了……
-- by freeatom -
为括号正名!
armorking 写道括号最多,一个不省 严重同意 我经常这样写: ...
-- by 庄表伟 -
Lua 的协同和 Scheme 的延 ...
hax 写道明显coroutine比call/cc流行啊。js2都要加入coro ...
-- by lichray -
Lua 的协同和 Scheme 的延 ...
明显coroutine比call/cc流行啊。js2都要加入coroutine了 ...
-- by hax






评论排行榜