Shiro Kawai
shiro****@lava*****
2004年 5月 7日 (金) 02:45:48 JST
From: Katsutoshi Itoh <cut-s****@maste*****> Subject: [Gauche-devel-jp] Re: CPS を知るのによい参考文献 Date: Fri, 07 May 2004 00:56:02 +0900 > In message <20040****@lava*****>, Shiro Kawai writes: > >ここもわかりやすいです。 > >「SchemeとActor理論」 > >http://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/actor/actor.html > > http://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/cont_intro.html > > 同じサイトのこれ↑目からウロコでした。 > Cでもこんな簡単に脱出ができるとは知らなかったです。 この説明はあくまで、「returnを他の関数へ渡すことができたら」という 架空の話ですね。 実際に動くものとしては、(脱出をするなら)setjmp/longjmpを使わざるを 得ないと思います。 Gaucheの正規表現エンジンはCで書かれていますが一種のCPSで、 マッチが成功する限り、次のマッチを行う関数を呼び出し続けて、最後に longjmpします。 (完全なCPSだと失敗の継続と成功の継続の二つを渡すのが綺麗なんですが、 「通常のreturn」=失敗継続、「再帰呼び出し→longjmp」=成功継続 としています) --shiro