Kimura Fuyuki
fuyuk****@hadal*****
2003年 4月 25日 (金) 11:53:44 JST
At Thu, 24 Apr 2003 15:58:20 -1000 (HST), Shiro Kawai <shiro****@lava*****> wrote: > > > それと、ビルトインクラスに対して object-equal? や write-object が効か > > ない(*)のは今のところ仕様だと思うので、それはどこかに書いておいたほう > > がいいと思います。 > > 確かに、Cのレベルでprintルーチンやcompareルーチンが > 定義されてるとSchemeからオーバライドできませんね。 オーバーライドできないのも問題だと思いますが、Cで定義していない場合に も効果がないみたいです。(NULLがオーバーライドできないという意味??) (define-method object-equal? (obj1 obj2) #f) (define t (sys-localtime (sys-time))) (object-equal? t t) => #f (equal? t t)) => #t あと、こんなのがデフォルトで定義してあると便利かと思ったんですが、なん か落し穴がありそうな気がしています。どうでしょうね。 (use srfi-1) (define-method object-equal? (obj1 obj2) (every (lambda (slot) (equal? (slot-ref obj1 (car slot)) (slot-ref obj2 (car slot)))) (class-slots (class-of obj1)))) > # ところで現在のCVSからはビルドできます? なんとか。FreeBSDのportsではautoconfの最新版が2.53という困ったことになっ てるので、自前で2.57を入れました。 -- 木村 冬樹