==> (+ 1 (call/cc (lambda (cc) (+ 20 300)))) 321ここでは,(lambda (cc) (+ 20 300))の計算結果がCall/CCの 結果となります. これは,CommonLispで,
<cl> ((lambda (val) (+ 1 val)) (+ 20 300)) 321と同じ扱いになります. もし,Call/CCに渡された計算手続きの引数が手続きとして 実行された場合には,その手続きの引数の計算結果が call/ccが呼ばれた時点のcontinuationに渡され, そのcontinuationにその計算結果を渡した結果が (+ 1 (call/cc ...))の結果として返ります.
==> (+ 1 (call/cc (lambda (cc) (+ 20 (cc 300))))) 301(lambda (cc) (+ 20 (cc 300)))では,(cc 300)という 式を実行しており,この300がcall/ccの結果として返ります. これは,CommonLispでは,
<cl> ((lambda (val) (+ 1 val)) 300) 301または,
<cl> ((lambda (val) (+ 1 val)) (catch 'cc ((lambda (v) (+ 20 v)) (throw 'cc 300)))) 301と同じ扱いになります.