ささだです.

(2010/05/03 22:57), Yusuke Endoh wrote::
>>  現在,Fiber#transfer と Fiber.yield/Fiber#resume は一緒に使うな,使っ
>> て変なことが起きても知らないよ,という立場を取っています.というのも,一
>> 緒に使うと簡単に SEGV させることが出来るからです.
> 
> 混ぜると理解困難な挙動になるのは確かなんですが、SEGV するとは
> 知りませんでした。
> この例に関しては、最後のパッチで SEGV はしなくなると思います。


 新しい仕様を考えるのはしんどそうだし,SEGV しなくなればとりあえず良い
と思いますので,遠藤さんを信じます.
 
>>  例えば前者が出来るクラスを Coroutine,後者が出来るクラスを
>> SemiCoroutine として提供して混ぜないようにするという手段もあるのですが,
>> 大クラス主義の Ruby とはなじみません.
> 
> 大クラス主義は「概念的に似ているものに複数のクラスを作らない」
> だと思います。
> Coroutine と SemiCoroutine は実装はほとんど共通しているものの、
> 概念的にはかなり異なっていると感じます。goto と function call
> くらいには違いますよね。
> なので、別の名前にしてもよかったんじゃないかなあ。今更ですが。
> 
> [ruby-dev:31596] 以来、transfer は用途がわからないわりに混乱を
> 招くと言う「百害あって一利なし」だと思うので、なければよかった
> のにと思っています。

 continuation と合わせて,gem とかに追い出しちゃえばよかったかなぁ.

 ちなみに,Control flow を制御する,という意味で,私の中ではやっぱり同
じものってカテゴリーに.

-- 
// SASADA Koichi at atdot dot net