スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Windows XPにおけるSWI-Prologのセットアップのメモ

Windows XPにおけるSWI-Prologのセットアップ作業の手順を自分のためにメモ。Prologは「プロログ」と読みます。

SWI-Prologの入手とインストール

SWI-Prologは、以下のページからダウンロードできます:

SWI-Prolog downloads

w32pl5100.exeをダウンロード(64bit版Windowsで使用するときはw64pl5100.exeをダウンロード)します。

ダウンロードしたexeファイルをダブルクリックして実行し、ウィザードにしたがってインストールを行います。途中、関連付ける拡張子について聞かれます。Prologの拡張子は通常「pl」か「pro」です。一方、ActivePerl (Windows上でPerlを使えるようにするための定番ツール)もまた、拡張子「pl」に関連付けを行います。ActivePerlを使用している場合には、Prologの拡張子のほうを「pro」にするなどして適宜対応してください。

プログラムの実行

関係の定義を記した以下のプログラムを、sazae_family.plという名前で保存します。ここでは、c:\srcフォルダの下に保存するものとします:

% child(X,Y):X は Y の子供である
child(sazae, namihei).
child(sazae, fune).
child(katsuo, namihei).
child(katsuo, fune).
child(wakame, namihei).
child(wakame, fune).
child(tarao, sazae).
child(tarao, masuo).

sazae_family.plをダブルクリックすると、SWI-Prologが起動します:

% library(win_menu) compiled into win_menu 0.00 sec, 12,912 bytes
% library(swi_hooks) compiled into pce_swi_hooks 0.00 sec, 2,404 bytes
% c:/src/@prolog/sazae_family.pl compiled 0.00 sec, 1,688 bytes
Welcome to SWI-Prolog (Multi-threaded, 32 bits, Version 5.10.0)
Copyright (c) 1990-2010 University of Amsterdam, VU Amsterdam
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.

For help, use ?- help(Topic). or ?- apropos(Word).

1 ?- 

あるいは、先にSWI-Prologを起動([スタート]→[すべてのプログラム]→[SWI-Prolog]→[Prolog])し、consultコマンドでファイルを読み込む方法もあります:

1 ?- consult('c:\\src\\sazae_family-org.pl').
% c:\src\@prolog\sazae_family-org.pl compiled 0.00 sec, 1,608 bytes
true.

2 ?-

関係を定義したファイルを読み込んだら、「?-」のあとに質問を入力していきます。

sazaeはfuneの子供か?:

?- child(sazae, fune).
true.

masuoはnamiheiの子供か?:

?- child(masuo, namihei).
false.

namiheiの子供は誰か?:

?- child(X, namihei).
X = sazae ? ;
X = katsuo ? ;
X = wakame ? ;
false.

答えは一つずつ表示されます。セミコロン(;)を入力すると次の答えを探しに行き、Enterキーあるいはピリオド(.)を押すと中断します。全て探し終わると「false」が返ります。

wakameを子供とする者(つまり、wakameの親)は誰か?:

?- child(wakame, Y).
Y = namihei ? ;
Y = fune.

実をいうと、なぜさっきは「false」を返し、今回は最後の答えのあと何も返さないのか、その違いの理由が私には分かりません。GNU Prologでも似たような挙動になります。

taraoを孫とする者(つまり、taraoの祖父母)は誰か?:

?- child(tarao, X), child(X, Y).
X = sazae,
Y = namihei ;
X = sazae,
Y = fune ;
false.

taraoかkatuoのどちらか一方を子供にもつ者は誰か?:

?- child(katsuo,X);child(tarao,X).
X = namihei ;
X = fune ;
X = sazae ;
X = masuo.

終了するときは、「halt.」を入力します:

?- halt.

【theme : プログラミング
【genre : コンピュータ

プロフィール

よしいず

Author:よしいず
MATHEMATICS.PDFというウェブサイトを運営しています。

管理の都合上、トラックバックとコメントはオフにしてあります。ブログ経験者なら分かっていただけると思いますが、スパム(アダルトやその他の宣伝)ばかりなのが現実です。

リンクは自由です。当サイトの記事に対する間違いの指摘・意見・感想などを述べた記事からのリンクは歓迎です。ただし、ブログ記事アップ直後はミスが多く、頻繁に修正します。場合によっては削除する可能性もあります。その際、何も断りもなく修正・削除しますがご了承ください。内容を参考にする場合には投稿後一週間ほど様子を見てからにしてください(笑)。

記事の間違いを指摘するときは、その具体的箇所、理由(仕様に反するなど)・根拠(参考にした文献など)、代替案(同じ結果を得るための正しいやり方)も教えてください。そうしないと、(指摘される側および第三者はその時点では無知の状態なので、)どこが間違いなのか分かりませんし、本当に間違っているのかどうかが判断・検証できません。実際、間違いだと指摘されたことが結局は正しかったというケースもありますので。

このブログのタイトル一覧

リンク
月別アーカイブ
カテゴリ
最新記事
検索フォーム
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。