世間にはいろいろな言語がありますねえ。
ライセンスがかなりヤバそうなのであきらめました。 だいたい AT&T (以下略)
一部に SML/NJ のライブラリを流用してるのでこれまたヤバい。
GPL と LGPL のコンビネーションなので全く問題なし。
こ、これって例の第五世代……? 初めて見た。 ライセンスは特に変な制限はないので問題なさそうだ。 少なくとも日本語で会話できるならなんとかなるだろう (笑)
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)
なんかこう……モニタを見たくないんですよね。 何の脈絡もなく 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)
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 追跡ドキュメンタリー 60 分 (嘘) を 書いていたのですが、あまりの長さに躊躇して場所を移しました。
です。
うちのサイトはメインマシンにミラーを作って 次のように rsync でアップデートしているのだけど、 最近、差分アップデートが効かない。
#!/bin/sh rsync --verbose --recursive --links --perms "$@" \ ~/w/Mirror/ sava:/var/www
アップデートして、少し待ってからもう一回やると 全く同じファイルを転送している。変だ。
いろいろオプションを変えてみた結果、--size-only を付けると正常になった。 ローカルマシンとサーバで時間がズレてたのがいけなかったらしい。
時間は合わせとくに越したことはないけど、 --size-only は付けといたほうが無難ってことかな。
(02:31)
どうもありがとうございます。そのままコミットしてくださっても構いませんよ。よろしく。
誰かFlash化きぼーん > SEGV
入力された事実群だけからでは真(true)であることが証明できなかったと答えているからで、偽(false)であるとまでは言えないということだと思います。
なるほど。後で条件が増えれば真になるかも、
ということですね。深い。