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