外人のジョークが好きだ

ギャグとかって、自分の身近な感覚よりも疎遠なところから飛んでくる方が飛距離があってよりおもしろいと思うんだ。

というわけで外人のジョークが好きだ。意味がわからないことも多いけど。


そして今日の外人ジョーク。

「人間には、数学がわかる人間と数学がわからない人間の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)

# Rergattf

Qriljv

(2009/07/14 17:17)

コメントする

トラックバック(0)

このブログ記事を参照しているブログ一覧: 雑記2007年9月22日(土)b

このブログ記事に対するトラックバックURL: http://www.at-akada.org/mt/mt-tb.cgi/396

著者について

赤田敦

nightly[at]at-akada.org

紹介: about

ホーム: at-akada.org

-> 携帯電話用

なかなか更新されないときは...

-> 赤田ブログ生成器

2009年7月

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31