Gauche > Archives > 2014/10/24

2014/10/24 06:06:09 UTCmnzk
#
ある型に対して tree-map と sort を別々に利用しているプログラムを書く時に、冒頭でcompare定義をしておけば以降楽ができるかも、と考えてのことでした。
ただよく考えると、define-method は暗黙の振舞を定義してしまうので、誰もが納得する「自然な」比較以外を定義するべきではないと思い至りました。最初に書いたケースでは、別途普通の述語関数を定義してcmpfn に明示的に渡すと。
#
object-comapreについてはcompare側の説明で「Schemeで定義したクラス」と明記されていますね。それじゃCで定義されている型は compare で定義すればいいの? という疑問がわきました。複素数のcompareメソッドを定義したら sort はエラーにはならなくなりましたが、期待した結果にはならなかったような気がします(記憶に自信がないですけど
2014/10/24 06:36:11 UTCshiro
#
Cで定義された型については原則としてobject-compareは効かないです。今のところユーザ側ではどうしようもないですね。
#
比較関数については現在のHEADで、srfi-114を元に大きく整理しました。例にあげられたようなアプリであれば、そのアプリ用のcomparatorをひとつ定義しておけば、それをtree-mapにもsortにも渡すことができます。
2014/10/24 06:38:42 UTCmnzk
#
comparetorはチェックしていませんでした。調べてみます。ありがとうございます。