如何在prolog过程中的最后一个参数后插入一个额外的参数?

时间:2010-03-24 12:45:31

标签: prolog predicate

我是新手学习prolog,我想知道,如果我们有一些像

这样的程序
father("Nic","Adam").  

我想编写一个函数,它会为此

添加新值
father("Nic","Adam","something"..) 

我该怎么做?使用清单?或者是什么?

2 个答案:

答案 0 :(得分:1)

快速回答:你不想这样做。

更长的答案:father/2谓词具有一定的含义,即father(X,Y) X的谓词是Y的父亲。 father/3谓词完全不同。你想用第三个论点实现什么?通常,您使用其他规则,这些规则从father/2谓词派生,或者甚至将其解析为father/3参数。

主要问题仍然存在:第三个论点的目的是什么?如果您希望您的分辨率基于相应的father/2谓词的存在而适用于某些特定的第三个参数,您可以执行father(X, Y, 'something') :- father(X,Y),如果您有相应的father/2事实,这将成功

PS:学习你的术语。在Prolog中,我们不谈论过程,我们不编写函数。相反,我们有谓词事实规则,......

PPS:我不确定您使用的是哪种Prolog实现,但您可能希望使用'something'而不是"something"。后者通常会创建一个字符代码列表,而不是字符串:

?- X = 'some'.
X = some.

?- X = "some".
X = [115, 111, 109, 101].

答案 1 :(得分:0)

简单写作

father(nic, adam). 

因为谓词已经定义了它。这就像说明一个事实:你声明 father(nic, adam)true,那么你可以用这些预期结果执行以下内容:

?- father(nic, adam).
Yes

?- father(nic, X).
X = adam