Gauche > Archives > 2010/07/27

2010/07/27 01:53:31 UTC(び)
#
object-compare定義してもsortから呼ばれる気がしない...
#
(define-method object-compare ((req1 <request-entry>) (req2 <request-entry>))
  (time<? (ref req1 'access-time) (ref req2 'access-time)))
#
こんなの定義してるのに
#
*** ERROR: object #<<request-entry> 0x16800f10> and #<<request-entry> 0x16800f10> can't be ordered
#
って言われる
#
sortのオプション引数として上のobject-compare渡すと問題なくソートされる。
#
何か勘違いしてるかなぁ...
#
あーすごい勘違いしてる
#
失礼しました
#
time<?はbooleanを返すんだった。何でこれを使ったんだろう
#
そうか、sortのオプション引数に渡す関数の仕様がそのまま(object-)compareに使えると思い込んでたんだな
2010/07/27 10:40:26 UTCshiro@LosAngeles
#
sortのそれは確かにちょっと混乱があるかもなあ。sortが(Ord,Ord)->Boolを取るっていうのが伝統。でも一般的な比較を考えた場合、3値を返すオペレータの方が便利な場合もあるのでcompareはそっち。
#
Perlのsortは3値を返す比較関数を取るんじゃなかったっけ。
#
sortだけに限って言えば、less thanだけでやるか3値でやるかは性能に影響を及ぼさないって検討をどっかで見たことがあった。
2010/07/27 10:43:07 UTC(び)
#
本質的に違うものなのかもしれませんが、make-tree-mapにはeuqalityを示す関数とlessthanを示す関数を渡すというのがまたややこしいですね
#
何も渡さないときはcompareをkeyに適用しちゃいかんのだろうか、と思ったりして
2010/07/27 10:44:52 UTCshiro@LosAngeles
#
そこは迷った。sortとの一貫性の方をとった。sortの伝統を捨てられるならcompareで統一できた方が綺麗だったかもしれない。
#
ああ、でも省略時にcompare使うのはありか。
2010/07/27 11:52:03 UTCshiro@LosAngeles
#
右手親指にテーピングしてたらかぶれてしまった。カユイ。
2010/07/27 14:09:46 UTCshiro@LosAngeles
#
いっつも忘れてて来る度に思い出すんだけど、南カリフォルニアって夏でも朝晩は結構寒い。太陽が燦々と照るカリフォルニア、ってイメージに引きずられるんだろうか。昼は暑いしなあ。
2010/07/27 15:33:56 UTCshiro@LosAngeles
#
siggraph、シャトルバスの運用がいまいち。2日連続でホテルからのバスが満員で乗れず。結局メトロで会場に。予算けちってるのかな?
2010/07/27 21:09:22 UTCshiro@LosAngeles
#
Jim Morrisのkeynote良かった。やる気が出る。
2010/07/27 22:00:00 UTCとおる。
#
シャトルの始発地点近くのホテルにとまるといいのかも。
#
Perl だと <=> っていう二項演算子があって、これが -1、0、1 のどれかを返します。sort もデフォルトでこれを使ってたはず。
#
C++ の STL の順序付きリストだと、== と < と両方わたしますね。