1

一篇关于 CPS 的 Wikipedia 文章中,有以下代码片段,表面上来自 Scheme:

(define (pyth& x y k)
 (*& x x (lambda (x2)
          (*& y y (lambda (y2)
                   (+& x2 y2 (lambda (x2py2)
                              (sqrt& x2py2 k))))))))

我找不到任何其他示例,或对“pyth&”、“*&”和“+&”用法的解释。许多谷歌搜索只发现还有其他形式,例如“=&”和“/&”。

4

1 回答 1

2

这些只是函数名称,pyth&是 CPSpythagoras过程,*&是 CPS 乘法过程和+&CPS 加法过程,与通常的对应物不同,因为它们在最后一个参数中接收延续,最后&只是一个命名约定来提醒你其中,在链接段落的开头说明了这一点:

在 CPS 中,每个过程都有一个额外的参数,表示函数计算的结果应该做什么

于 2014-03-27T20:26:16.990 回答