継続渡しとCPSの差異
継続渡しとCPSの差異
関数は引数に関数を取ることもあり、その全てを継続渡しにする必要はない
良い例は

19.2のfind-fold2関数
lisp(define (find-fold2 pred? proc/cont seed lis)
(cond [(null? lis) seed]
[(pred? (car lis))
(proc/cont (car lis)
seed
(lambda (seed2)
(find-fold2 pred? proc/cont seed2 (cdr lis))))]
[else
(find-fold2 pred? proc/cont seed (cdr lis))]))
これは第2引数のproc/contは継続渡しになっているが、
find-fold2自体、pred、は継続渡しではない
出現している3つの関数の内の1つだけを継続渡ししてる
これと対比して、出現する関数全てを継続渡しにしたものを特に
CPSと呼ぶことにしている
でも別にこれが厳密な定義でもないと思う

継続渡しと言えばCPSとイコールだよというノリで書いている記事もたくさん見るし
でもこれが逆にわかりにくさが増している気がするので、

はこれを区別して呼ぼうと思う
原典みたいなものに当たって明確にイコールだよと言及しているものを観測すれば書き直す
