KOGURO, Naoki
naoki****@kogur*****
2014年 6月 16日 (月) 19:50:27 JST
すみません、ちゃんと元のメールを見ていなかったので、さっきのメールは無視してください。 2014年6月16日 19:48 KOGURO, Naoki <naoki****@kogur*****>: > refの第3引数はfallbackを指すことが多いので、push!の中では(ref place item '())を使うようにしてはどうでしょう? > slot-refの場合に困ってしまいますが、(ref (obj <object>) (slot <symbol>) (fallback > <null>))を定義しておけば、ad-hocだけど何とか凌げると思います。 > > > 2014年6月12日 21:02 Shiro Kawai <shiro****@lava*****>: > > 「push!はそういうもの」と定義してしまえば一貫性はありますね。 >> ただ、現状のGaucheの実装は例外ハンドラを設定するだけでもオーバヘッドがあるので、 >> push!の度にハンドラ設定が入るのはちょっと嫌かなあ >> >> 性能を考えるなら、「初期値が無ければ()を返す」ようなref、というgeneric function >> (デフォルトではただrefを呼ぶ) を作っといてpush!はそれを使うって手も >> 考えられます。ちょっと用途が狭すぎる感じですが。 >> >> とはいえsparse-vectorなど、最初にpush!する前には値がないデータ構造、 >> というは他にもあるので、push!側で対応するというのが理にかなっているような >> 気はしてきました。 >> >> --shiro >> >> >> From: Masatake YAMATO <yamat****@redha*****> >> Subject: Re: [Gauche-devel-jp] hash-tableに対するpush! >> Date: Thu, 12 Jun 2014 20:24:27 +0900 (JST) >> >> >> なるほど。 >> >> >> >> push!は定義からして、対象となる場所の初期値が()であることを前提にしてます。 >> >> なので「初期値を別に与えないとならない場所」に使うのはドメインエラーとも言えます。 >> > >> > ドメインエラーと言われていしまいましたが、push!を拡張するというのは的外 >> > れでしょうか。 >> > >> > 前もってpush!が想定する例外を決めておき、push!可能なデータ側は「初期値 >> > が無い」ところをrefしたタイミングで例外を上げることにします。push!は、 >> > その例外がきたときだけ値を ( ) でつつんで set!します。この実現方法であ >> > れば<hash-table>を含む初期値がない他のデータ型でもpush!でき、あたらしい >> > データ型を覚えずに済みます。 >> > >> > あるゆるpush!に例外をキャッチするための仕掛けを準備するステップが増える >> > のでもしかしたら問題となるかもしれませんが、新しいことを覚えずに済むのは >> > 魅力に思います。 >> > >> > 大和 >> >> _______________________________________________ >> Gauche-devel-jp mailing list >> Gauch****@lists***** >> http://lists.sourceforge.jp/mailman/listinfo/gauche-devel-jp >> > > > > -- > KOGURO, Naoki > naoki****@kogur***** > -- KOGURO, Naoki naoki****@kogur***** -------------- next part -------------- HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B... 下载