web-dev-qa-db-ja.com

SWI-Prologの最初の使用

私はPrologを初めて使用します。私は単にWindowsVistaのPrologからいくつかの出力を取得しようとしています。

Prolog5.1をダウンロードしてインストールしました。インストール時に.proファイル拡張子を選択しました(Perlファイルと混同しないように)。

test.proというファイルを作成しました。このファイルの中に私は以下を入れました:

inside(tom).
?-inside(tom).

ファイルをダブルクリックすると、コマンドラインインターフェイスがポップアップしました。このインターフェース(一般的なPrologバージョン/著作権情報の束の後)での唯一の出力は次のとおりです。

1 ?-

OK、最初に、私はそれが質問質問になるとは思っていませんでした。私はそれがanswer質問(「はい」の線に沿った何か)になると思っていました。

とにかく、私は次のようにクエリに応答しようとしました:

コマンドラインで「inside(tom)」を再挿入したので、行全体は次のようになります。

1 ?- inside(tom).

押した Enter そしてエラーメッセージを受け取りました:

ERROR: toplevel: Undefined procedure: inside/1 (DWIM could not correct goal)
13
John R

これを最初にコンパイルする必要があります(プロローグでは「相談」とも呼ばれます)。あなたが持っているプロローグのバージョンを知っていれば、このコマンドの正確なキーエントリを見つけることができます(Ctrl-Lが機能する可能性があります)。ちなみに、プロローグの素晴らしい世界へようこそ-私はそれが大好きです:)このハードルを乗り越えるとすぐに、それはずっと良くなります。 :)

6
Chris Allen

あなたがそれを言わなかったならば、Prologは質問に答えません事実。 (member(1, [1,2,3])などのいくつかの組み込みファクトを除く。)

誰が中にいるのかを知ることができます(コメントは%に従ってください):

1 ?- [user].                          % get facts and rules from user input
|: inside(mary).                      % Mary and John are explicitly inside
|: inside(john).
|: inside(X) :- location(X, house).   % rule: anyone in the house is inside
|: inside(X) :- location(X, office).  % (variables start with a capital letter)
|: 
|: location(tom, house).
|: location(bernard, house).
|: location(anne, office).
|:                                    % type Ctrl+D
% user://1 compiled 0.00 sec, 1,220 bytes
true.

2 ?- inside(tom).                     % Prolog deduces that Tom is inside
true .

Prologを学びたいのなら、 今すぐPrologを学ぶ は良い無料のチュートリアルです。

21
Fred Foo

速くて汚い。欠落していたのは、consultと呼ばれるファイルの「コンパイル」であり、構文は次のとおりです。行内のすべての文字が関連しています。

?- [ファイル名]。

次に、データベースで質問したり、他のことをしたりできます。(プロローグのソースコード)

http://www.swi-prolog.org/pldoc/man?section=quickstart

0
Shim Kporku