2011-03-07 120 views
11

我是Prolog的全新产品。我只是想在Windows Vista上从Prolog获得一些输出。第一次使用SWI-Prolog

我已经下载并安装了Prolog 5.1;安装时我选择了.pro文件扩展名(不要与Perl文件混淆)。我创建了一个文件test.pro。 在这个文件中,我把下列:

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

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

1 ?- 

OK,对于初学者来说,我没想到它问题;我期待它回答一个问题(沿'是'的线)。

无论如何,我试图用下面的查询作出回应:“里面(TOM)”

在命令行中我重新插入,使整条生产线的样子:

1 ?- inside(tom). 

我按输入并得到一个错误信息:

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

回答

6

您需要编译这个第一(也称为序言“请示”)。如果我知道你有哪个版本的prolog,我可以找出这个命令的确切键入(Ctrl-L可能工作)。顺便说一句,欢迎来到prolog的美妙世界 - 我喜欢它:)只要你跨过这个障碍,它会变得更好。 :)

+0

我猜这是SWI-Prolog的(你可能多少会感到惊讶有不同的'序言')。在这种情况下,“咨询...”位于主文件菜单上,它会提示您输入要加载的文件,只需重新加载此文件即可。事实上,在它做任何事之前,你确实需要问一个查询 - 这是任何prolog程序的工作原理。 – 2011-03-07 17:21:09

+0

是的,SWI-Prolog。我发现并且我认为我编译了这个文件。起初,当我从文件菜单中选择'consult'选项时,我没有看到名为test.pro的文件。我必须选择查看“所有文件”(这很奇怪,也许prolog不能识别.pro文件)以使文件变得明显;我选择它,它似乎是合作的。我收到了消息:“dir .../test.pro编译0.00秒,1,696字节”,但是我没有在同一个目录中看到编译的文件,并且正在搜索与Prolog一起安装的新目录结构安装。 – 2011-03-07 17:45:46

+0

我重新安装了SWI-Prolog,但文件扩展名的默认值为.pl。这似乎是问题......除了按照您的建议通过菜单“file/consult”进行编译之外。谢谢你的帮助。 – 2011-03-07 20:53:20

19

如果您还没有告知它,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,Learn Prolog Now是一个很好的,免费教程。

+1

非常感谢。我也喜欢这个教程。 – 2011-03-07 22:13:24

0

快速而肮脏。缺少的是编译该文件,称为咨询 ,语法如下,该行中的所有字符都是相关的。

? - [filename]。

那么你可以提出问题,并做其他事情什么数据库。(在序言中的源代码)

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