Schemeは継続(continuation)という、たいへん強力で柔軟な制御機構を備えています。継続を用いれば大域脱出、コルーチン、疑似マルチタスク、バックトラックといった特殊な制御を必要とするプログラムを効率的に記述することができるのです。しかし一方でその抽象度の高さから、「継続は難しいもの」という印象も強いようです。 ここでは継続の正確な定義はとりあえず後に回し、直感的な観点から継続を導入してみたいと思います。 話を簡単にするため、今全ての手続きが1-in/1-outであるような1-Schemeというものを考えます。例えば: (define (double x) (* x x)) (double 2) => 4 (define (add1 x) (+ x 1)) (add1 2) => 3 のような手続きが1-Scheme手続きです。 (なおSchemeではlambdaを自由に導入で