2013-05-02 35 views
0

首先,这是一个家庭作业问题,所以请给我一个提示!SICStus Prolog制作产品/ 3规则总和/ 3

%Here is a rule that defines sum/3 that returns yes if Z is sum of X and Y 
sum(X,Y,Z) :- 
    Z is X + Y. 
%How can I make product/3 
product(X,Y,Z) :- % based on sum/3 above? 

另外,如何在产品上编写查询,以便返回X * Y的答案而不仅仅是真的?

回答

2

考虑一下数学:

x * 0 = 0 
x * y = x + x * (y - 1) 

这应该帮助你写你的规则。

至于查询,你可以使用这样的事情来得到这样一个结果:

?- product(5, 3, Result). 
Result = 15 ? 
yes 

总之,如果你有一个查询未绑定变量,它会尝试找到一个值变量,谓词成功。

+0

有什么更好的方式给出提示,但不是答案!谢谢 – 2013-05-02 06:30:06

+0

嘿,我有一个关于后继仿函数的问题。这不是SICStus中的预定义功能吗?你如何在序言中定义s(X)? – 2013-05-02 10:56:19

+0

@HwaSooCho:对不起,我对SICStus没有特别的经验;一般只是Prolog。你可能会有更好的运气开始一个新的问题。 – icktoofay 2013-05-04 04:00:07