青木日記

<前の日 | この月 | 次の日>

2002-10-24

RAA

もう新しくなった! 速い! すごい!

(13:48)

RHG/CD-ROM メモ

世間にはいろいろな言語がありますねえ。

  • SML/NJ http://cm.bell-labs.com/cm/cs/what/smlnj/

ライセンスがかなりヤバそうなのであきらめました。 だいたい AT&T (以下略)

  • Moscow ML http://www.dina.dk/~sestoft/mosml.html

一部に SML/NJ のライブラリを流用してるのでこれまたヤバい。

  • SWI-Prolog http://www.swi-prolog.org/

GPL と LGPL のコンビネーションなので全く問題なし。

  • CU-Prolog http://www.icot.or.jp/ARCHIVE/Museum/IFS/abst/009-J.html

こ、これって例の第五世代……? 初めて見た。 ライセンスは特に変な制限はないので問題なさそうだ。 少なくとも日本語で会話できるならなんとかなるだろう (笑)

CU-Prologとの遭遇

Linux ではパッチが必要らしい。これも作って入れとくか。 それだけやったらコンパイルは無事に通った。

~/s/src/cu-prolog/src % ./cup3
 
        *******  cu - Prolog III  Ver. 3.94 (Jan.27, 1995)  *******
        [COPYRIGHT] Institute for New Generation Computer Technology (ICOT)
                Tokyo, Japan 1991-94
        Type '%h' for help.
 
        [Heap=500K System_heap=1000K Env_stack=80K Cstr_heap=1000K
         Ustack=50K Name_heap=50K]
_

プロンプトはアンダーラインか。変なの。

えーと……どうすればいいんですかね。 「Type '%h' for help.」と言ってるから打ってみよっと。

_%h
** Usage:       cuprolog [-Hxxx][-Sxxx][-Exxx][-Cxxx][-Uxxx][-Nxxx][filename]
** % commands (ver.3.94 (Jan.27, 1995)) ** (prompt _:normal, $:trace, >:step)
        %h      : help                  %Q : quit
        # <OS command>: OS command interpreter
        %d <predicate name>: list definition
                %d* %d/: list all   %d?: list names   %d-: user pred
        " <file name> ": consult file (no echo)
        " <file name> ?: consult file (with echo)
        %l <file name>: set log file ['no']
        %w <file name>: save program
        %p <predicate name>: spy switch
                %p*:spy all     %p.:nospy all   %p?:list spyed preds.
        %t      : normal trace switch [off]
        %s      : step trace switch [off]
        %a      : all modular mode  <=now
        %o      : M-Solvable mode
        %c <number>: max number of refutation node [10000]
        %n <name>       : new predicate name ['c']
        %L      : list new predicate definitions
        %f      : show the system heap size
        %C [Feature,type,... ]. : set cat() functor
                 ==> [POS,1,FORM,1,AJA,2,AJN,2,SC,3,SEM,1]
        %G      : Garbage Collection
        %D <number> : Max Depth of Printing, now is 32
        %u      : Undefined Predicate Handling Switch [FAIL]
        %M <number> : Max number of Variables in Transformation[50]
        %P <predicate name>: Preprocess Constraints
                %P*: preprocess all     %P?: predicates with nonmodular
        %R      : system Reset
        %S      : show statistics of the previous question.
_

Garbage Collection だの log file だの、馴染み深い言葉が見えますな。 OS Command Interpreter ってのはシェルのことか。 試しに #ls としてみるとちゃんと動くのでそうらしい。

Prolog なんてほとんど触ったことないゆえさっぱりわかりませんね。 『ソフトウェア考現学』を参考にして書いてみる。

_hage(x) :- kebukai(x)
.
_kebukai(sean_connery).

二行目がピリオドだけになっているのはもちろん忘れたからであった。 文はピリオドで終わるらしい。Ruby に汚染されていると自覚する瞬間である。

えーと、そんでなんだっけ。問うんだ。

_?-hage(sean_connery).
no.

あれ? yes になるはずなのにな。うーんうーん。

あ、そうか、変数は大文字じゃないといけないんだな!

_hage(X) :- kebukai(X).
_kebukai(sean_connery).
_?-hage(sean_connery).
true.

む、なんだ true って。なんで偽が no で真が true なんだ。 対称性ってもんを考えなさい。

いやそんなことより、またもや Ruby に汚染されていることが 露呈してしまった。小文字が定数で大文字が変数だなんて……。

うーん、これはあれか。パターンマッチなんだから、よーするに yacc の 文法みたいなもんだと思えばいいのかな。yacc なら変数 (終端記号) が 大文字になっててもおかしいとは思わないもんな。

(この項続く)

(16:03)

暇です。いや、暇じゃないんですけど、心理的に暇なんです。そこで小見出しだけで日記を構成してみようかと思います。だからなんだと言われても別に意味なんてありゃしません。そもそも人生など無意味のかたまりです。意味というのは人間が後付けで用意するものであり、元来、世界には意味など不要なのであります。それでも強いて言うならば方向転換です。卵が腐ってたとかゆでたまごを切ったら一面緑色だったとかネギが3cmも成長してしまったとかそういうネタから少しは離れたいじゃないですか。ていうかそんなことばっかりやってると死ぬじゃないですか。まあ、だからと言って別のネタがあるわけではないんですけど。

なんかこう……モニタを見たくないんですよね。 何の脈絡もなく Prolog で遊ぶのもそれはそれで面白いんですけど、 何やっても同じモニタの中で動いてることじゃないですか。 http だろーと https だろーと ftp だろーと知ったことじゃないです。

Set だろーと Array だろーと List だろーと知ったことじゃないです。

オブジェクト指向だろーと関数型だろーと論理型だろーと知ったことじゃないです。

LL だろーと LALR だろーと generalized LR だろーと……もういいや。

何の脈絡もなく無駄な p タグを連発してスペースを空けてみたぜー! しかも閉じタグがない! くー! (HTML 的に) ワル! カコイイ!

……というアホなネタをやってしまうくらい暇です。っはぁ〜。

ティッシュのクリネックスってあるじゃないですか。 いま箱がそこにあるんですけどね。綴りは Kleenex なんですねえ。 e が二つあるとどうしてもクリーネックスと読んでしまいますね。

……どうでもいいです。

Ruby で開発したからって、なんでも頭に R を付けるのはいかがなものか。

……自分も付けてました。すんません。

時計の短針とは言っても太針とは言わないのはなぜですか。 普通は太いじゃないですか。 「太ってる」は差別で「背が短い」は差別じゃないとでも言うのですか。

鉛筆を、短すぎて削れなくなくなるまで使ったことってありますか? 理論的に言えば鉛筆は全てが均等に短くなり、いずれは短い鉛筆が 大量に残るはずですが、チビた鉛筆を捨てた覚えがほとんどありません。 しかし使っている「のべ」鉛筆本数は明らかに 50 本以上はあるはずなのです。 ではいま現在鉛筆立てに残っている以外の鉛筆はどこへ消えたのでしょうか。 まるで、決して死体の見付からないカラスのようだと思いませんか。

16 ポートのスイッチングハブをガシガシと 16 段積み上げて、 カテゴリ 6 のストレートケーブルを端からギョシギョシと刺していきたいです。

昨日 akr さんに教えてもらった diff の論文を印刷してたらプリンタの インクがなくなりました。うちのプリンタはインクがなくなると赤いランプが 点くんですが、そのマークがスライムみたいなドリッピーみたいな形をしてます。 と考えたところで、そもそもドリッピーは油滴なんだからドリッピーに似てるのは あたりまえだということに気付きました。

どうして消しにくい消しゴムはなくなるのが遅いのでしょう。

えー、というわけで、 右から左まで、視界に入ったものについて一段落ずつ書いてみるテストでした。 まる。

(22:30)

p

p タグを連発しても Mozilla や w3m では何の効果もないことがわかった。 間抜けだ。

(22:41)

消すか消さないか

しかし「更新」を使って修正してしまうのも 卑怯な感じがするのでそのままにしておこう。 人生一発勝負だ。

(22:48)

久々のアレ

TMail の質問メールが来た。マルチパートメールを作るには どーするかっていう話だ。このへんのユーティリティメソッドは 欲しいと思ってたので答えを書くついでにライブラリにも追加する。 んじゃテストしようと思ったら、

~/r/tmail % t
..................................................
...................F..............................
............../home/aamine/lib/ruby/tmail/port.rb:161: [BUG] Segmentation fault
ruby 1.7.3 (2002-09-13) [i686-linux]
zsh: 1758 abort (core dumped)  exectest

というわけでデバッグ中です。

(00:01)

SEGV追っかけ

一度はここに SEGV 追跡ドキュメンタリー 60 分 (嘘) を 書いていたのですが、あまりの長さに躊躇して場所を移しました。

です。

あ、

速攻でまつもとさんのツッコミが。ナイスたいみんぐ。

(02:09)

rsyncが変

うちのサイトはメインマシンにミラーを作って 次のように rsync でアップデートしているのだけど、 最近、差分アップデートが効かない。

#!/bin/sh
rsync --verbose --recursive --links --perms "$@" \
      ~/w/Mirror/ sava:/var/www

アップデートして、少し待ってからもう一回やると 全く同じファイルを転送している。変だ。

いろいろオプションを変えてみた結果、--size-only を付けると正常になった。 ローカルマシンとサーバで時間がズレてたのがいけなかったらしい。

時間は合わせとくに越したことはないけど、 --size-only は付けといたほうが無難ってことかな。

(02:31)

本日のツッコミ(全4件)
matz (2002-10-25 02:04)

どうもありがとうございます。そのままコミットしてくださっても構いませんよ。よろしく。

なかだ (2002-10-25 10:41)

誰かFlash化きぼーん > SEGV

こさこ (2002-10-25 10:52)

入力された事実群だけからでは真(true)であることが証明できなかったと答えているからで、偽(false)であるとまでは言えないということだと思います。

あおき (2002-10-27 18:57)

なるほど。後で条件が増えれば真になるかも、
ということですね。深い。


<前の日 | この月 | 次の日>
2002|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|09|10|
2009|07|
2010|09|