■ 外人のジョークが好きだ
ギャグとかって、自分の身近な感覚よりも疎遠なところから飛んでくる方が飛距離があってよりおもしろいと思うんだ。
というわけで外人のジョークが好きだ。意味がわからないことも多いけど。
そして今日の外人ジョーク。
「人間には、数学がわかる人間と数学がわからない人間の3種類いる」
■ EOP
できごと指向プログラム(EOP)というのを思いついた。
式の集合をできごとと見なすことで、複数のできごと同士の関連を表現することができる。
i = 0
e1 = Event.that{puts i}
#e1 はX というできごと
e1.happen
#e1 がおこる
#=> 0
Event.that{puts i}.happen
#=> 0
#これでも同じ
e2 = Event.that{i += 1}
e2.cause(e1)
# e2はe1を引きおこす
e2.happen
#=> 1
一瞬すごいアイデアのような気がしたのだが、よく考えるとそうでもなかったかもしれない。
なんでそんなことを思いついたかというと、
↓この本に
勁草書房、2004
HがSを信頼しており、自分もHも言語共同体LCに属するとSが信じているとき、SがHにXと言うことがpをHが信じるようになることをSが欲しているとHが思うことを惹き起こすとSが信じているならば、SがHにXと言うことがpをHが信じることを惹き起こすとSは信じている。
p102
という日本語の限界に挑戦した文が載っており、考えていたら頭がプリオンになってきたので
S.believe[( s.say(H, X) ).cause( H.think( S.want( H.believe(p) ) )]
→
S.believe[( s.say(H, X) ).cause( H.believe(p) )]
というのを書いて整理していたせいである。
ちなみによく読むと、元の文は結局、『信頼があるならば、「おれが信じてほしがっているのが伝わったなら、信じてくれるはず」という信念もあるはずだよね』というくらいのことを述べているだけだった。
class Event
def initialize
@content = []
@result = []
end
def self.that(&expr)
e = Event.allocate
e.instance_variable_set("@content", [expr])
e.instance_variable_set("@result", [])
return e
end
def happen
for e in @content do
e.call
end
for f in @result do
f.call
end unless @result.empty?
end
def cause(e)
@result += e.content
end
def mean(e)
@content = e.content
end
protected
def content
@content
end
def result
@result
end
end
i = 0
e1 = Event.that{puts i}
e1.happen
Event.that{puts i}.happen
e2 = Event.that{i += 1}
e2.cause(e1)
e2.happen
Event.that{i += 2}.happen
コメント(1)
コメントする
トラックバック(0)
このブログ記事を参照しているブログ一覧: 雑記2007年9月22日(土)b
このブログ記事に対するトラックバックURL: http://www.at-akada.org/mt/mt-tb.cgi/396
Qriljv
』 (2009/07/14 17:17)