call/cc
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/01 02:22 UTC 版)
Schemeの call-with-current-continuation (call/cc と省略される) は、その時点での継続を引数として関数を呼び出す手続きである。Schemeの言語仕様書(R7RS)には「もっとも単純な例」として次のコードが載っている: (define list-length (lambda (obj) (call-with-current-continuation (lambda (return) (letrec ((r (lambda (obj) (cond ((null? obj) 0) ((pair? obj) (+ (r (cdr obj)) 1)) (else (return #f)))))) (r obj)))))) このコードは、真正な(終端が空リストである)リストが渡された際にはそのリストの要素数を数えて返し、そうでない場合はfalse値を返す。
※この「call/cc」の解説は、「継続」の解説の一部です。
「call/cc」を含む「継続」の記事については、「継続」の概要を参照ください。
- call/ccのページへのリンク