2012-04-30 8 views
4

多分私の質問は本当に簡単な答えがありますが、私はそれを見つけることができません。何もしない続きをコード

スキームR6RSでは、何も実行せず引数を必要とする継続をどのように構築できますか? 。

((lambda() 
    (display 1) 
    (display 2) 
    (QUIT) 
    (displey "A"))) 
それは1 preints

と2ではなく、「A」+

次のことができます。

私の目標は、私は次のコードを持っている場合QUITようなのはそれを名前を付けてみましょう、継続を持つことです助けて?

ありがとうございます。

答えて

5

最も簡単な方法は、単純な「リターン」スタイルの継続を使用することです:

(call/cc (lambda (return) 
    (display 1) 
    ... 
    (return) 
    (display "A"))) 

は全くその助けをしていますか?

+0

よろしくお願いいたします。私は再利用できるリターン関数の定義に興味がありました。あなたの答えからインスピレーションを得て、 '(quit #fを定義する')そして '(call/cc(lambda(k)(set!quit k)))'を実行しました。 – Aslan986

+0

@Justinコール/ ccがコンテキストを返すのは何ですか、ラムダ内でコールすると(return)、プログラムはcall/ccの呼び出しに続く命令にジャンプし続けます。 – dader

+1

@dader - はい、これは継続の最も単純で最も単純な用途の1つです。実際、制御を囲む範囲に戻すので、「エスケープ継続」と呼ばれることがあります。 –

関連する問題