6月 11

論理型プログラミング言語 Prologを触ってみました(『7つの言語 7つの世界』第4章)

7つの言語 7つの世界』(オーム社)の第4章で紹介されているPrologという言語を少しさわってみました。論理型プログラミング言語というものらしいです。

使用した処理系
GNU Prolog(日本語対応はしてない)

 Mac OS X Lionにインストールしてみたのですが、/opt/local/binにインストールされてしまったため、PATHはすぐには通っていない等々で初歩的なところで結構躓きましたが、以下を参考にしてなんとかその問題もクリアしました。
SWI-Prolog – Macで使うための準備 : Please Comment on My Code
 
.bashrcに書き込むか、一時的に通すだけでよいなら、直接、シェルに打ち込む。

export PATH=$PATH:/opt/local/bin

 処理系にGNU Prologを使用している場合は、起動するために「gprolog」と打つ。

| ?-

 こんな感じのものがでれば起動成功です。

  Prologのソースファイルの拡張子は慣習的に「.pl」なのだそうです。Perlと混同してしまいそうですが、こちらのほうが歴史が古いようです。テキストエディタで作成したplファイルを適当なところにおいて

| ?- ['/Users/code/test.pl'].

 な感じで [‘ ’]内にplファイルを置いたディレクトリを指定して読み込むと 

| ?- ['/Users/code/test.pl'].
compiling /Users/code/test.pl for byte code...
/Users/code/test.pl compiled, 4 lines read - 933 bytes written, 7 ms
yes

とコンパイルして読み込んでくれます。
  
 ここまで出来るようになるまでインストールから一時間はかかっったとです。情けなかと・・・。

 それはそれとしてProlog、なかなか面白い言語です。『7つの言語 7つの世界』のPrologの解説は半分も理解できませんでしたが、それでも面白かった。これまで私がかじってきたRubyやPerlのようなプログラミング言語は、あーだったらこうして、こーだったらあーしてみたいな命令を書いていたのかなと思うのですが、Prologはルールを書き込むという感じです。

 ・・て、ここで簡単なサンプルでも書いて、それを例示できればよかったのですが、今回はパス・・・・。挫折した・・・orz。
 
 自分でローテーションを組むプログラムを書いてみようかと

・月曜日から土曜日までの1日2人が入るローテーションを組む。
・ローテーションに入るのはTaro、Jiro、Hanakoの3人
・Taroは○曜日と○曜日と○曜日が都合がよく、Jiroは・・・・

 という感じで条件を決めて、一週間のローテーションがばっと決まるものを書いてみたかったのですが、リストもよく理解してない私なので、ハードルが高すぎて早々に躓いてしまいましたorz。出直してきます。とりあえず今回は『7つの言語 7つの世界』の次の章のScalaに進みます(進めるのか・・・?)。