【文件属性】:
文件名称:程序员为什么还要刷题-cpsdoc:cpsdoc
文件大小:476KB
文件格式:ZIP
更新时间:2021-07-07 14:51:42
系统开源
程序员常刷题CPS
-
也称为
Continuation-Passing
Style
-
用于
Nim。
在过去的几个月里,观看
Nim
社区的人可能听说过“CPS”这个词。
似乎对
CPS
存在一些混淆。
具体来说,CPS是什么,不是什么,能做什么,不能做什么。
这篇简短的文章试图回答上述问题,并描述了与
CPS
相关的一些技术细节,以及它如何适应
Nim
生态系统。
注意:本文档使用术语CPS来表示使用延续的编程风格,并使用Nim-CPS来表示当前正在开发的特定实现。
TL;DR
--
分钟总结
Nim-CPS是一个转换程序的宏。
此转换通过编译指示将单个函数定义作为输入,并产生以下输出:
一个延续类型,通常是一个object
,它包含一个函数指针和来自原始函数的任何局部变量
原始过程中控制流更改之间的每个语句列表的新延续分支函数;
这些分支函数被修改为使用延续字段代替局部变量,并且在每个分支的出口处,延续中的函数指针被更新以指向控制流路径中的下一个分支
一个与原始函数具有相同签名的新便利函数,它实例化了延续类型的新实例
这种转换后不需要堆栈,这允许一些有趣的可能性:
转化的功能,
【文件预览】:
cpsdoc-master
----papers()
--------cpc-manual.pdf(102KB)
--------cpc.pdf(93KB)
--------1011.4558.pdf(364KB)
----cps.svg(114KB)
----README.md(13KB)