高等魔術の教理と祭儀

http://ratiwo.blogspot.com/2009/12/reading-craft-of-prolog.html

参加してきました。もひかんさんスライド作成本当にお疲れさまでした。

スライドに疑惑の部分があって。
http://twitter.com/zick_minoh/status/7089081847
これは少し内包的な説明ですが、外延的に言う(つまりものは言いよう)と、雪歩さんは16歳から16歳になったのですよ!!
立場的には私はzickさん側です。
でもこのはるゆきのスライドページのuniv演算子使ったりする例は割と自明じゃなくて面白い話なので頭に埋め込んでおこう。そのまま焼き付けます!!
(C(スライドはXでconflictしてまずいのでCで書換え)は一回unifyされて束縛されると悲しいので、copyするのは普通に面白いなーと思います。)

Prologはなんというか、Prologを生で使っているケースは良く分からない(Haskellはなんていうか、Haskellを生で使っているケースは良く分からないと言われれば、まぁ使いますけどって感じなので、同じようにそんな事は無いと思うのですが)し、処理系は書きますが何をどうしたらPrologらしくなるのかなーみたいなことは良く分からないままだったのですが、参加して取りあえずPrologさんをバックエンドにすえて、マクロなりそれこそ他の何かを被せてフロントエンドを超幸せ指向にしちゃうというのが常套手段なんですかなーと思ったのでした。

Prologっていうとどうしても記号の持ち回しと未束縛変数と単一化に目が行って、まぁ前者は色々と良いのですが後者はおめが幸せだーみたいな例は、例えば差分リストとかだとありますけど差分リストって個人的には驚く程嬉しく無いというかなんというか。

驚く程嬉しいっていうのは、他の代替物でやるとなると骨が折れたり素直さが失われたりするような何かをさらと書けてしまう時に訪れる事が多くて、差分リストはうーんというかなんというか。

会場でkinabaさんが、なにか良いのないんですか( http://twitter.com/kinaba/status/7063100076 )という出て当然の筈なのに誰も出さなかった質問をしてしまったので、レシートの裏使って考えて、まぁ普通にポインタさんの代わりに使ってmemoizationも兼ねたい、超簡単に言うと複数箇所から参照されていて1度決定すれば自動的に他の場所も決定して欲しい、でそういう願いは例えばunion-findとかだと素直にその概念を表せているので便利なんじゃないですかねーと言ったところなにかkinabaさん的には宜しかったようです。でも私はほとんど何も考えないで発言してます。( http://twitter.com/kinaba/status/7063119237 )
[ union-findの参考 : http://algorithms.blog55.fc2.com/blog-entry-46.html ]

でも基本的にそれポインタ(ないしは参照)があれば事足りるんじゃないですか?という説もあるんじゃないかと思うんですが、例えばポインタとか参照だとそいつ「本体」に対して単一化的な操作が出来ないから悲しい事が起こるんじゃないかと思っていてでも良い例が思い浮かばないでござる・・・。

それと単一化は部分的に構造が決定していない(逆にいえば部分的に構造が決定している)場合にも有効な操作なので、その辺をフルに生かしたすなわちポインタとかまほまほって感じのなにか・・・。

でそうなってくると私としてはCircular Programmingでやってのける事を素直に書き換えちゃえば・・・とか思うのですが、大体書き換えられる気がしてどうなんだろう。うーん。
書換えにくいそれとかってあるのかなぁ。

まぁそういうものがポンと出てくる程優れているわけないので、感覚を掴む為にもちゃんとThe Craft of Prologを読まないといけないはずなんですけど、読むんでしょうか・・・。

"Prolog Pearl"みたいなものってないんですかね。ちなみに、"Proof Pearl"ならあります。

その他メモ

もひかんさんの夏コミネタ。

Haskell(というかGHC)の型システムにいちゃもんつけるんだったら、自分でProposal付きの論文書いて通して本体を変えろみたいなすごい怒られてしまって、GHCとか所謂天才が沢山居るのでそんなの無理だと思うんですけどなんかまぁ・・・。

あとそもそも、それ本当にGHCでやる必要あるんですか?なんで依存型使わないんですかみたいな話は、出来る事でやっても嬉しくないですし、それから色んな方法でやらないと物が見えてこないので別の型システムでやりこめるっていうのは重要な仕事です。

また型推論要らないのでとか言ってしまって死ねと言われたのでもう懇親会とかでは自分からHaskellの話をしない人になろうと思った。

でもScopedTypeVariablesがあって嬉しいよーというのは普通に伝わったっぽくてでもHaskellの話はしない。

山賊おにぎりが美味しかった...。

kinabaさんに、shift/resetの型ってどうなってるんですかというのと同時にCurry-Howard対応的には何と対応してますか?と聞いたところ、"Polymorphic Delimited Continuation [ http://logic.cs.tsukuba.ac.jp/~kam/paper/aplas07.pdf ]"という論文に載っているので読みなさいという事だったので読みます。

モデルの理論 (数学基礎論シリーズ)

"Bilattices and the semantics of logic programming"
"Multi-Valued Logics (bilatticeの話らしい)"
"Note on the semantics of logic programming"
加えて、interlaced-bilattice

1階述語論理の代数モデルについて説明している日本語の本ないのかなぁ(論理体系と代数モデルは命題論理のみ)

仕事もアカデミックもどちらも死ぬ程辛い

高槻のやよい軒行く

Purely Functional Data Structuresは本当に読むべき(読みます)

CHRsのイベントやる(作った => http://atnd.org/events/2675)