Prolog 如何检查术语是否存在?

Prolog 如何检查术语是否存在?,prolog,Prolog,如何检查管理员是否存在?否则: user(admin). user(guest). 通常,可以动态添加到数据库中的user/1等谓词声明如下: assert(user(admin)). 您可以查询用户管理员是否存在: :- dynamic(user/1). 现在,如果添加用户admin,则相同的查询将成功: ?- user(admin). false. 在没有动态声明的情况下,可以自动生成一个谓词: ?- assert(user(admin)). true. ?- user(admin)

如何检查管理员是否存在?否则:

user(admin).
user(guest).

通常,可以动态添加到数据库中的
user/1
等谓词声明如下:

assert(user(admin)).
您可以查询用户管理员是否存在:

:- dynamic(user/1).
现在,如果添加用户admin,则相同的查询将成功:

?- user(admin).
false.
在没有动态声明的情况下,可以自动生成一个谓词:

?- assert(user(admin)).
true.
?- user(admin).
true.

通常,可以动态添加到数据库中的
user/1
等谓词声明如下:

assert(user(admin)).
您可以查询用户管理员是否存在:

:- dynamic(user/1).
现在,如果添加用户admin,则相同的查询将成功:

?- user(admin).
false.
在没有动态声明的情况下,可以自动生成一个谓词:

?- assert(user(admin)).
true.
?- user(admin).
true.

这不是我感兴趣的。如何检查
user(admin)
是否已添加到数据库?@user33060601如果
?-user(admin)
返回
true
,则您知道它已添加到数据库中。如果它返回
false
您知道它没有被添加到数据库中。我用使用
current\u predicate/2
的不太“黑客”的方法取代了异常捕获的粗糙用法。(感谢有人对这篇文章的评论,现在似乎已经不见了?)这不是我感兴趣的。如何检查
user(admin)
是否已添加到数据库?@user33060601如果
?-user(admin)
返回
true
,则您知道它已添加到数据库中。如果它返回
false
您知道它没有被添加到数据库中。我用使用
current\u predicate/2
的不太“黑客”的方法取代了异常捕获的粗糙用法。(多亏有人对这篇文章的评论,现在似乎已经不见了?)