回答
只是指出了一个显而易见的事实:“事实部分”是针对事实,事实是始终如一的谓词,用于描述某些属性。
Single
和determ
是“事实模式”中,在一个事实声明任选地使用,是指Single
事实上总是具有一个且仅一个值,determ
意味着事实上可以具有零个或一个值。
谢谢,我理解了第二部分,但是关于第一部分,我只是明白,我不能使用“单个” 和“确定”谓词“部分,我只能在”谓词“部分使用”非定义“关键字 但在”事实“部分中,我可以使用”确定“,”单个“,”非定序“ 因此,何时使用谓词部分可以替换为“事实”部分? –
你不能用事实替代谓词,因为我写的是不同的事物,事实是谓词,但谓词并不总是事实!事实总是如此,像“太阳(黄色)“,但谓词可以是真或假,它取决于哪些术语包含,通常是你已经评估过的东西,比如'sun(Color)'('Color'现在是一个变量)。 – rok
事实在序言中以dB 表(列1,列2,...)如表predicat的替代确实Facts
需要像Fact(Arg1,Arg2)
形式给了我们{真,假}值仅适用于特定的常量提到里面“()”
所以事实是一个复杂的术语或谓词的确实,Args
不是变量,是个别常量。
例如
father(fathername,childname).
规则也谓词的取代的形式为
rule_type1(+In_Args,?Out_Args) :- body .
rule_type2(+In_Args) :- body . % (true,false)
rule_type3 :- body .
它为了产生从事实或从通过Querys
衍生成体logique规则数据示例
max(X,Y,Z) :- X>=Y -> Z=X ; Z=Y .
?- max(3,5,Z). /* give us */ Z=5
在视觉序言Facts
可与多种可选关键字声明:与关键字determ的声明
事实。
关键字determ
确定事实数据库只能包含使用此关键字声明的事实(数据库谓词)fact_N(...)的一个实例。因此,如果您尝试使用assert
之一,然后将第二个这样的事实写入数据库,则Visual Prolog引擎将生成运行时错误。 (1041断言宣称为确定的事实,但事实已经存在)。 example
以关键字single声明的事实。
事实fact_N声明确定一个与事实只有一个实例必须始终存在之前的关键字single
:
由于单事实必须当程序调用目标将已经知道;因此,必须在程序源代码的子句部分初始化单个事实。
例如:
FACTS
single singleFact(STRING, STRING)
CLAUSES
singleFact("","").
你使用的是什么序言? '确定'不是我知道的关键字 – CapelliC
Visual Prolog 5.2 –