我是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的美妙世界 - 我喜欢它:)一旦你遇到这个障碍,它会变得更好.:)