プログラミングGauche / Kahuaプロジェクト, 川合 史朗

プログラミングGauche

プログラミングGauche

絶賛放置中のSICPを置いといて読了。
SICPでやってなかった継続とかがなかなか理解できなくて時間がかかってしまいました。

呼び出し元
  ├→ 呼び出し先
  └→ 呼び出した後の処理

で、「呼び出した後の処理」を取り出して呼び出し先に渡せるような感じかなぁ。
call/ccについてはScheme:使いたい人のための継続入門も読んだ方が理解が深まるかな。

call/ccは継続渡し形式に変換する関数ではなく、あくまで、call/cc式自身の継続(自分の値を待っている計算)を自動的に作り、それをcall/ccの引数であるprocedureに渡して、そのprocedureをcallするという関数だ。

とか

ただ、callされた手続きに継続が渡ってきて、その継続が手続きとして使われれば、 (そう、使わなくたって一向に構わないってことに注意しよう。使われなければ、call/cc式は単に値を返すだけだ。それはcall-with-input-fileなど他の全ての関数となんら変わらない。) その継続の呼び出しによりジャンプする(ように見えるかもしれない)。しかし、それだってcall/ccに限った話ではなく、他の関数を呼び出すところでは常に起こっていることだ。

の辺りを読んで、ちょっとすっきりしました。

てなトコで、自分用メモ。
Gauche本のコードとか回答が含まれているトコロ