首次使用SWI-Prolog

Joh*_*n R 12 prolog

我是Prolog的新手.我只是想在Windows Vista上从Prolog获得一些输出.

我已经下载并安装了Prolog 5.1; 我在安装时选择了.pro文件扩展名(不要与Perl文件混淆).

我创建了一个名为的文件test.pro.在这个文件中我放了以下内容:

inside(tom).
?-inside(tom).
Run Code Online (Sandbox Code Playgroud)

我双击该文件并弹出一个命令行界面.在这个界面上(在一堆通用的Prolog版本/版权信息之后),唯一的输出是:

1 ?-
Run Code Online (Sandbox Code Playgroud)

好的,首先,我没想到它会一个问题; 我希望它能回答一个问题("是"的问题).

无论如何,我试图用以下内容回复查询:

在命令行中我重新插入'inside(tom).',所以整行看起来像:

1 ?- inside(tom).
Run Code Online (Sandbox Code Playgroud)

我按下Enter并收到一条错误消息:

ERROR: toplevel: Undefined procedure: inside/1 (DWIM could not correct goal)
Run Code Online (Sandbox Code Playgroud)

Fre*_*Foo 21

如果您没有告诉事实, 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 .
Run Code Online (Sandbox Code Playgroud)

如果您想学习Prolog,Learn Prolog Now是一本优秀的免费教程.


小智 6

你需要先编译它(在prolog中也称为"consult").如果我知道你有哪个版本的prolog,我可以找到这个命令的确切键输入(Ctrl-L可能有效).顺便说一句,欢迎来到prolog的美妙世界 - 我喜欢它:)一旦你遇到这个障碍,它会变得更好.:)