2002-03-19 [長年日記]
λ. 圏論
ようやくp.210で、あと約150ページ。こっからUniversal Mapping Property等の少し本格的な話に入ってくのかな。2/28に書いたような直和と直積の圏論的な定義ももうすぐ出てくるはず。
そういえば、有野さんが何を使って勉強してるのか、ちょっと気になる。
それから、つかぬことを訊きますが、GTMって何でしょうか?
λ. SyncEnumeratorを使ったEnumerable#member?の拡張
ある集合とその補集合が共に帰納的可算ならばその集合は帰納的なので。
でも名前が悪いし、そもそも使い道無さそうだなぁ……
ところで、最近こういうどーでも良いコードを書いてると何だか楽しい。
require 'generator' module Enumerable @@orig_member_p = instance_method(:member?) def member?(item, complement = nil) unless complement @@orig_member_p.bind(self).call(item) else e = SyncEnumerator.new(self, complement) e.each{|a,b| return true if e.end?(1) or item == a return false if e.end?(0) or item == b } raise "not found either in self or in complement" end end alias include? member? end
λ. tDiaryサイト全文検索
Namazuで検索できるようになってる日記は多いので、それをnamaduで繋げることが出来たら、カッコよさげかも。
おお!補集合も考えると member? は必ず答えを出すメソッドになる<br>のですね。目から鱗が。<br>しかしここの @@orig_member_p ってのは Enumerable 固有の変数に<br>なるんで、これだとこれを include したクラス全部で共有してしま<br>いますよ。モジュールからそれを include したクラスのクラス変数<br>にアクセスするのは eval 系を使ったり結構手間がかかるんじゃな<br>いかな。
GTM ゆうたら Graduate Texts in Mathematics っていう<br>Springer のシリーズです。
失礼!勘違いしてました。Enumerable#member? って組み込みで<br>既にあるんですね。だからこのコードでいいのでした。<br>後、alias を使う方法もありますね。<br>なんか日記につっこむの初めてだったから、つっこみまくって<br>しまいました。(^^;
原さんほどの人に驚いていもらえるなんて、これは書いた甲斐がありました。<br><br>aliasじゃなくて、クラス変数にUnboundMethodを保存すれば、他の誰かがmember?を同じように置き換えても安全かなと思ったのですが、クラス変数名がバッティングしたらやっぱり同じですね。むむ。