関西Lispユーザー会 第二回 @グランフロント大阪 は Sakura Internetさんの提供でお送りしています。
そのた全体
ショートプログラム
各20分です。
Common Lisp の紹介
Lispをプログラム紹介することで、Lisp の良さを伝えたい。
プログラミング言語Rubyの冒頭にあるサンプルプログラムの数独リゾルバをLispで書いて比較した。
以下感想
「やっぱり Lisp は最高やね。プログラミング言語界広しといえども、こんな表現力のある言語はほかにいません」とルーディーラッカーの解説をもじっみる。
しかし、オリジナルの数独はできるだけ、rubyで使われる技法をたくさんとりいれて紹介するという目的で作成されていたので、Lisp版ももっと いろいろな技法をいれたほうがいいのではないかなと思った。
Lispと不完全性定理
Lispで不完全性定理が似ている?と思った人がいろいろ語っていた。
どうも、 is-resolve? という関数が実装できないことが騙された感の原因かもしれない。
もしこのような関数が実装できたとしたら、矛盾が発生する、そのため実装できないのですよ。ということがいいたいはず。
ちなみに Lisp と 不完全性定理 で8000件もあるのは、Lispでかくと自己言及がわかりやすく書けるから、だと思っている。たぶん、Cでも関数ポインタを駆使すれば自己言及できるけど、それがわかりにくいんだよね。
やっぱり Lisp の表現力は最高やね。
自己修正可能なLisp
Common Lisp で 自己修正する Lisp系方言を作成した話。
AIをつくる、方法としてプログラムやアルゴリズムを与える方法はいまいちなのではないかということから、できるだけ制限なしに、Lispを自己修正していけるようにする方法を提案しているのだとおもう。
- シンボルテーブルか、書き換えルールを変更していく。
- シンボルはシンボルを返す関数として定義する。(自己修正にするため?)
- ただし、primitive な要素 (quoteやdefunなど) は独自のものを使う
ABCL
Clojure使えば? と思ったが、Clojure は Common Lispではないとのこと。
つまり、Common Lispでプログラムを作成しているが、 Java のライブラリが必要になっり、かつ既存のCL部分はもう書き直したくない、というときには使えるとのこと。
そういう状況ってレアだと思うがまあ、全くないとはいえないかな。
ちなみに、私はABCLを使っていません。