[theory] 有谁对CPS比较熟的?
tonywinslow1986
2007-09-02
有谁对CPS比较熟的?帮忙介绍一下吧,我看yaht看晕了。
Thank you! |
|
Lich_Ray
2007-09-05
实在是没时间解释。大概说一句:普通的函数式编程风格是基于推理的,或者基于数据在新环境的更新的;CPS是一种基于操作(函数)在新环境中的更新的编程风格,前景见 http://wfp.group.iteye.com/group/topic/2521。
|
|
Lich_Ray
2007-09-18
再回一点吧。
1. 不可能看晕的。YAHT 上的 CPS 只是讲了风格,没讲原理或应用。只要知道它是用最后一个参数保存更新操作的函数的风格就行。试着把那个额外函数带入几步就知道了。 2. 关于应用: Scheme 等语言中的 call/cc。这种运用需要所有的函数都有最后一个参数 cont(当然,是隐式的),这样就相对于可以取到所有函数的保护栈帧;只要 cont 在作用域内,爱弹哪个弹哪个。 纯函数式语言的 IO。所有的纯函数式语言都使用延续IO。Haskell 的 IO Monad 其实就是延续(不使用 do 的时候就知道了)。方法是始终用一个 cont 跟踪 IO 的过程,逼迫用户把 IO 写成一个链,消解 IO 副作用对程序流程产生的副作用(主要表现为时间上的不确定性)。 总的说来,自己写程序一般用不到 CPS 本身(FP 纯恶搞的Style多呢,CPS 还算正常的),知道其衍生物就差不多了。 |