(事实和谓词)&&(单一和确定)之间的区别
Difference between (Facts and Predicates) && (Single and Determ)
我只是想知道,序言中的 "facts" 和 "predicates" 部分有什么区别?
"single" 和 "determ" 关键字有什么区别?
简单明了:"Facts section"是针对事实的,事实是永远为真的谓词,用来描述一些属性。
Single
和 determ
是 "fact mode",可选地用于事实声明,Single
表示事实始终只有一个值,determ
表示事实可以有零个或一个值。
Fact 在 db Table(Column1,Column2, ...)[ 中替换谓词,如 table =58=] 确实 Facts
采用类似 Fact(Arg1,Arg2)
的形式,它只为 "()"[ 中提到的特定常量提供 {true,false} 值=22=]
所以 Fact 确实是一个复杂的术语或参数谓词,Args
不是变量,是单独的常量。
例子
father(fathername,childname).
Rule 也是谓词的替代形式
rule_type1(+In_Args,?Out_Args) :- body .
rule_type2(+In_Args) :- body . % (true,false)
rule_type3 :- body .
它命令从事实或通过查询导出到正文中的逻辑规则生成数据
示例
max(X,Y,Z) :- X>=Y -> Z=X ; Z=Y .
?- max(3,5,Z). /* give us */ Z=5
in visual-prolog Facts
可以用几个可选关键字来声明:
用关键字 determ 声明的事实。
关键字determ
决定了事实数据库只能包含一个事实实例(数据库谓词)fact_N(...) 用这个关键字声明。因此,如果您尝试将 assert
一个然后是第二个这样的事实存入数据库,则 Visual Prolog 引擎将产生运行时错误。 (1041 断言声明为确定的事实,但事实已经存在)。
example
用关键字 single 声明的事实。
事实 fact_N 声明之前的关键字 single
决定了事实的一个且只有一个实例必须始终存在:
因为当程序调用目标时,必须已经知道单个事实;因此,必须在程序源代码的子句部分中初始化单个事实。
例如:
FACTS
single singleFact(STRING, STRING)
CLAUSES
singleFact("","").
我只是想知道,序言中的 "facts" 和 "predicates" 部分有什么区别?
"single" 和 "determ" 关键字有什么区别?
简单明了:"Facts section"是针对事实的,事实是永远为真的谓词,用来描述一些属性。
Single
和 determ
是 "fact mode",可选地用于事实声明,Single
表示事实始终只有一个值,determ
表示事实可以有零个或一个值。
Fact 在 db Table(Column1,Column2, ...)[ 中替换谓词,如 table =58=] 确实 所以 Fact 确实是一个复杂的术语或参数谓词, 例子 Rule 也是谓词的替代形式 它命令从事实或通过查询导出到正文中的逻辑规则生成数据 示例 in visual-prolog 用关键字 determ 声明的事实。 关键字 用关键字 single 声明的事实。 事实 fact_N 声明之前的关键字 因为当程序调用目标时,必须已经知道单个事实;因此,必须在程序源代码的子句部分中初始化单个事实。 例如:Facts
采用类似 Fact(Arg1,Arg2)
的形式,它只为 "()"[ 中提到的特定常量提供 {true,false} 值=22=]
Args
不是变量,是单独的常量。father(fathername,childname).
rule_type1(+In_Args,?Out_Args) :- body .
rule_type2(+In_Args) :- body . % (true,false)
rule_type3 :- body .
max(X,Y,Z) :- X>=Y -> Z=X ; Z=Y .
?- max(3,5,Z). /* give us */ Z=5
Facts
可以用几个可选关键字来声明:determ
决定了事实数据库只能包含一个事实实例(数据库谓词)fact_N(...) 用这个关键字声明。因此,如果您尝试将 assert
一个然后是第二个这样的事实存入数据库,则 Visual Prolog 引擎将产生运行时错误。 (1041 断言声明为确定的事实,但事实已经存在)。
examplesingle
决定了事实的一个且只有一个实例必须始终存在:FACTS
single singleFact(STRING, STRING)
CLAUSES
singleFact("","").