[Gauche-devel-jp] printer and comparer

Back to archive index

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を入れました。

-- 
木村 冬樹



Gauche-devel-jp メーリングリストの案内
Back to archive index