我是新手学习prolog,我想知道,如果我们有一些像
这样的程序father("Nic","Adam").
我想编写一个函数,它会为此
添加新值father("Nic","Adam","something"..)
我该怎么做?使用清单?或者是什么?
答案 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