Prolog言語の使い方
Prolog 言語処理系の使い方 メモ
ここでは、SWI Prolog 処理系の使い方を説明する。これは、情報科学類計算
機室の計算機にインストールされている。(他の処理系を自分のPC等にインス
トールして試してもよい。)
1. 処理系の起動方法
====================
シェルが使えるウィンドウをあけ(「端末」を起動し)、プロンプトのあとに、
swipl
とするだけでよい。
これで起動できない人は、
/opt/local/bin/swipl
として起動できるか試してほしい。後者だけが成功する場合は、「パス」の
設定に /opt/local/bin をいれると楽ができる。
2. Prologプログラム作成および実行方法
====================================
Prologのプログラムは、xxx.pl という名前のファイルにするとよい。
サンプルファイルが
~kam/prolog/basic.pl
などの名前で置いてあるので、それを自分のところにコピーしてから
swipl を起動するとよい。(たとえば cp ~kam/prolog/*.pl . とすると、
すべてのサンプルプログラムを、自分がいま現在いる場所にコピーできる。)
Prologプログラムのファイル xyz.pl を読みこむためには、swipl を起動後に
?-というプロンプトのあとに [xyz]. と書けばよい。つまり、
?- [xyz].
とすると、xyz.pl が読みこまれる。最後のピリオドを忘れないこと。
プログラムを書きかえて、再度読み込ませたいときは、再度[xyz].
とすればよい。
上記のように実行したときに、xyz.plというファイルが存在しない、と
怒られたときは、swipl を起動した時の directory に xyz.pl がない
という意味であるので、適切な場所から起動しなおすか、ファイルを
コピーするとよい。
プログラムを読みこんだあと、実行するためには、ゴールを入力する。
ゴールは、たとえば、
?- isParent(X,Y).
や、
?- isParent(X,Y), isParent(Y,Z).
のようになる。ここでも最後にピリオドが必要である。なお、ゴールは
複数の行にわたってもよい。
Prolog 処理系は、ゴールを満たす解が複数あるときは、1つ目を出力して待つ
ので、さらに解がが欲しければ n (next) を入力し、いらなければ、y を入力
する。この n/y を、もし、yes/no の意味と思ってしまうと、意味が逆になる
ことに注意せよ。
もし、無限ループ、あるいは、非常に時間がかかる処理になって反応がなくなっ
たときは C-c (control-c) を押せばよい。
3. 処理系の終了方法
====================
halt というゴールを実行すると、Prolog 処理系を抜けることができる。
?- halt.
あるいは、C-d (control-d)を押せばよい。