2002-02-16
λ. Gimp-Ruby 0.6.6
幾つかバグを見つけたので0.6.6をリリース。バグフィックス以外ではDRbIdConvの差し替えが最も大きな変更のはず。それから、mingw32用のバイナリも用意してあります。
λ. ffcall
news:m38zckodg6.fsf@maedapc.cc.tsukuba.ac.jpを見て、ffcallの事を知った。(ffcall-1.8.tar.gz)
Cでclosureを実現できたり、実行時に返り値の型を決めたり等色々出来るので、rubyのような言語の拡張ライブラリを実装するには何かと便利そうだ。例えばRuby/DLでのコールバック関数の数の制限なんかを無くす事が出来るはず。(もっとも、Ruby/DLはポータビリティを優先しているようなのでffcallのようなものを使うことは無いと思うけどね)
つーか、Bruno Haible って単なるUnicoderだと思ってたけど、他の事もやってたのね。(笑)
そういえば、Delphiにも似たようなのがあったなぁ。MakeObjectInstance()とFreeObjectInstance()だっけ。
2003-02-16
λ. variance
On Variance-Based Subtyping for Parametric Types では fixed-variance を bivariance と呼んでいるようだ。
λ. 『女王の百年密室』ラジオドラマ
そういえば明日からですね。http://www.nhk.or.jp/audio/prog_se_future.html
- 『女王の百年密室』(全10回)
- 【放送日】
- 2月17日(月)〜2月21日(金) 22:45〜23:00(1-5回)
2月24日(月)〜2月28日(金) 22:45〜23:00(6-10回)- 原作:
- 森博嗣
- 脚色:
- 富永智紀
- 選曲:
- 伊藤守恵
- 演出:
- 大久保篤
- 技術:
- 糸林薫
- 効果:
- 島津楽貴 木村充宏
- 出演:
- 高山みなみ 島本須美 八代駿 柴田秀勝 高戸靖広 水澤心吾 佐藤友紀
- あらすじ:
- 時は22世紀。全てがコンピュータで管理される世界。ナビの故障で道に迷ってしまったフリーライターのサエバ・ミチルとロイディは、女王が統治する幸福で豊かな楽園「ルナティック・シティ」にたどり着く。犯罪にも無縁の理想郷のような世界…だがある日、王子が女王の塔で殺される。そこは完全なる密室だった。調査を開始するミチルとロイディだったが、住民たちは誰も「殺人」の存在さえ認めない。この街にはそもそも「死」の概念がなかったのだ。誰が、どうやって、何のために?ミチルの調査が「神」にたどり着いた時、シティ創立の秘密を含め全ての謎が明らかとなる。
λ. 正格性フラグ
hugs98-Dec2001が以下のプログラムでsegmentation fault。これはまぁ仕方ないと思うのだけど、GHC-5.04.2でコンパイルして実行したら「Fail: <<loop>>」とか言って停まってくれて少し驚いた。でも、どうせならコンパイル時に検出できないものかな。
data Nat = Zero | Succ !Nat deriving Show main = print.show $ infinity where infinity = Succ infinity
【2006-09-20追記】 ちなみに、これでループを検出するのは実行時のブラックホール化(black holing)の仕組みによる。
λ. 読書
2004-02-16
λ. 蒼符「博愛のオルレアン人形」 ゲット
th7_udsa07.rpy。これで138/141。残るは3枚。
λ. Rena (2)
テストケースを色々と試していて、all_20031114/xmlbase/test015.ntで使われている「mailto:Jeremy_Carroll@hp.com#foo」というURIをuri.rbが弾いてしまうことに気づく。こんなURIありなのか!?
[追記] 弾いてしまうというのは早とちりで、URI.parse("mailto:foo@example.com#bar")
は通りました。問題は
URI::MailTo#to_s
がfragmentを出力しないURI.parse("mailto:foo@example.com") + "#bar"
が、「URI::BadURIError: not hierarchical URI: mailto:foo@example.com
」になってしまう
という点です。
後でやまだあきらさんに質問してみよっと。
λ. 各国語で正しい従軍慰安婦問題知識を伝える「Untold Facts of Comfort Women」
メモしようと思ってて忘れてたのでメモ。愛・蔵太の気ままな日記 (2004-01-30) より。
λ. 読書
- 『 ふしぎ遊戯 1』
- 『 ふしぎ遊戯 2』
- 『 ふしぎ遊戯 3』
- 渡瀬 悠宇 [著]
2005-02-16
λ. 『竹島は日韓どちらのものか』, 下條 正男
を読んだ。
λ. OCaml入門 (0)
OCamlの型システムについて良く知らずにあれこれ言うのもアレなので、この機会にOCamlについて少し勉強してみようと思った。とりあえず、現時点での印象は
- 整数の加算を「+」、浮動小数点数の加算を「+.」などと書き分けるのは面倒そー
- 多相バリアント(Polymorphic variants)と多相レコード(Polymorphic records)は便利そー
ってくらい。
λ. 地震
そういえば今朝の地震は揺れたなぁ。目が覚めた。
2008-02-16
λ. Alloyでラクトース代謝モデル (AlloyでALP?)
先日、Alloyで知識論理を使って論理パズルを解くで Alloy Analyzer を使ってみて面白かったので、また遊んでみた。 今回の題材は“ProLogICA: a practical system for Abductive Logic Programming”(20080128#p01)に載っていた、大腸菌 E. Coli*1 のラクトース代謝モデルと、それを用いた発想推論。
まず、Alloyによる記述は以下のようになる。
-- 遺伝子 (ラクトースオペロン) abstract sig Gene { } abstract sig LactoseOperon extends Gene { code : set Enzyme, -- コード化している酵素 } one sig lacY extends LactoseOperon { } one sig lacZ extends LactoseOperon { } fact { lacY.code = Permease lacZ.code = Galactosidase } -- 酵素 abstract sig Enzyme { } one sig Permease extends Enzyme { } one sig Galactosidase extends Enzyme { } -- 糖 abstract sig Sugar { amount : lone Amount, -- 現在存在する量 } one sig Glucose extends Sugar { } -- グルコース one sig Lactose extends Sugar { } -- ラクトース -- 量 abstract sig Amount { } one sig Low extends Amount { } one sig Medium extends Amount { } one sig Hi extends Amount { } -- 大腸菌 E. Coli one sig EColi { feed : set Sugar, -- 食べている糖 make : set Enzyme, -- 作られている酵素 express : set Gene, -- 発現している遺伝子 } fact { -- ラクトースオペロンはラクトースが存在しグルコースが不足したとき発現 all g : LactoseOperon | g in EColi.express iff (Glucose.amount=Low && Lactose.amount=Hi) || (Glucose.amount=Medium && Lactose.amount=Medium) -- 酵素はそれをコード化している遺伝子が発現しているときに作られる all e : Enzyme | e in EColi.make iff (some g : LactoseOperon | e in g.code && g in EColi.express) -- ラクトースを食べるのは二つの酵素が生産されているとき Lactose in EColi.feed iff Permease in EColi.make && Galactosidase in EColi.make -- グルコースが食べられるためのルールはない not (Glucose in EColi.feed) }
なお、ここではabducibleな述語(amount)以外の述語に関しては、ルール以外で真にならないようにモデル化している。つまり、abducibleでない論理式Aについて、Aを導く規則が A←B と A←C だったら、AlloyがB,Cに関係なくAを真にすることを防ぐために、A⇔(B∨C) という論理式として記述する*2。 というのも、ルールに関係なく真にされてしまうと、「発想推論」にはならないので。
で、E. Coli がラクトースを食べていることを「説明」する仮説を求めるために、そのモデルを作ってみる。
pred goal() { Lactose in EColi.feed } run goal
結果は以下のようになり、これはabducibleな述語amountを使った仮説 Glucose.amount=Lactose.amount=Medium が得られたことに相当する。 Nextボタンを押すと、Glucose.amount=Low, Lactose.amount=Hi な仮説も得られる。
ALP用のシステムと比較すると、ルールにないものは成り立たないということを明示的に記述せねばならず面倒。また、ALPの望ましい性質である仮説の極小性の保証はない。ただ、ALPのシステムの中には充足可能性のソルバを内部で利用するものもあり、ここではAlloyを使って同様のことをやってみたということで。
*1 「もやしもん」でもお馴染み
*2 言い換えるとcompletion semantics (完備化意味論)にしたがって解釈している。