http://matt.might.net/articles/a-normalization/中给出了将代码从 S 表达式转换为 A 范式的算法
作者做出了不寻常的选择,以延续传递风格编写算法。(也就是说,不是任何阶段的中间代码都用 CPS 表示,而是用 CPS 编写的用于进行转换的手写代码。)
就我所看到的它是如何工作的而言,这是有道理的,并且延续代表了每个生成的主体let
,但直觉上令人惊讶的是,CPS 应该是人类编写代码的最清晰的方式。
这实际上是 ANF 转换算法的最清晰形式,还是有不使用 CPS 的已知更好方法?