我在看书时遇到问题。我看到一个程序使用谓词“简单”(我猜simple/1
)。?-help(simple)
我不知道这个谓词是什么意思,我在控制台中找不到它 。但是当我在控制台中尝试一些查询时,它的工作方式类似于:
5 ?- simple(p(x)).
false.
6 ?- simple(mia).
true.
7 ?- simple(Mia).
true.
8 ?- simple(f(Mia)).
false.
我想这是某种谓词来确定参数是术语(或变量)还是复杂术语。
我在看书时遇到问题。我看到一个程序使用谓词“简单”(我猜simple/1
)。?-help(simple)
我不知道这个谓词是什么意思,我在控制台中找不到它 。但是当我在控制台中尝试一些查询时,它的工作方式类似于:
5 ?- simple(p(x)).
false.
6 ?- simple(mia).
true.
7 ?- simple(Mia).
true.
8 ?- simple(f(Mia)).
false.
我想这是某种谓词来确定参数是术语(或变量)还是复杂术语。
swi -prolog 手册有如下定义:
simple(@Term) is semidet 术语是原子的或变量。
定义在 quintus prolog 兼容性库中;在quintus prolog 文档中,定义是:
简单(+术语)
Term 当前实例化为原子、数字、数据库或变量。
在任何情况下,如果参数是一个简单的术语,则 simple/1 为真(不确定 quintus 手册对数据库的含义;我猜可能是 ODBC 连接的处理程序)
翻译成 ISO 谓词:
simple(T) :- var(T) ; atomic(T).
var/1它是最基本的元编程设备,因为如果不实例化变量,就不可能对任何子句进行谓词(即执行代码、绑定变量),而这很多时候是我们感兴趣的基本部分。