2016-11-26 103 views
0

我正在使用SWI Prolog。我希望定义一个add函数:add(X, Y),它返回X和Y的总和。但是,我不知道如何在Prolog中定义函数。我试着这样做使用谓词是这样:在Prolog中编写函数

add(X, Y, Z) :- Z is X+Y. 

,但在执行的形式add(2, 3, X)的查询这给出了一个错误说:

ERROR: toplevel: Undefined procedure: add/3 (DWIM could not correct goal)

而且,我无法理解:-:=而之间的区别编写规则。我在某处读到:-用于定义谓词,而:=用于定义函数。我不确定这是否正确。我尝试使用:=来定义函数,但它不起作用。

回答

2

把自己放置在同一目录序言文件,键入以下命令来加载和编译源文件function.pl

[function]. 

现在试运行(与你在一个文件中的函数发布确切的代码。 pl):

?- add(2,3,X). 
X = 5. 

使用Swi-prolog v 6.6.4。

Also, I cannot understand the difference between :- and := while writing rules. I read somewhere that :- is used to define predicates while := is used to define functions. I am not sure if this is correct. I tried using := for defining functions but it doesn't work.

逻辑程序是一组公理或规则(又名谓词)的,定义对象之间的关系时,不使用的显函数的概念,但由于函数确实是刚刚从输入集合的映射到输出集,您可以将它建模为关系,就像您对add/3关系所做的一样。

:-可以理解为逻辑蕴涵(实际上我觉得符号应该看起来像向后的箭头)

:=运营商你是指我甚至无法找到SWI序言文档中:search results for :=。如果你可以链接到你找到关于它的信息的地方,那会很好。