The Little Schemer の継続の例題がどうもコールバック関数にしか見えないんですが…。
(define multirember&co
(lambda (a lat col)
(cond ((null? lat)
(col '() '()))
((eq? (car lat) a)
(multirember&co a (cdr a)
(lambda (newlat seen)
(col newlat (cons (car lat) seen)))))
(else (multirember&co a (cdr lat)
(lambda (newlat seen)
(col (cons (car lat) newlat) seen)))))))
(define a-friend
(lambda (x y)
(null? y)))
(multirember&co 'tuna '(strawberries tuna and swordfish) a-friend)
lat の終端にきたら関数 col を動かしてねー。状態を保持しつづけているのでクロージャの連続ですが…。
たぶん継続の真髄は The Seasoned Schemer に載っているのでしょうが、 現在、The Little Schemer の第9章です。頑張ります。
これはあれですね。"継続"じゃなくて"継続渡しスタイル"ってやつです。