如何检查术语是否存在?

时间:2014-09-14 15:20:33

标签: prolog

user(admin).
user(guest).

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

assert(user(admin)).

1 个答案:

答案 0 :(得分:4)

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

:- dynamic(user/1).

您可以查询用户管理员是否存在:

?- user(admin).
false.

现在,如果添加用户admin,则相同的查询成功:

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

有可能提出一个自动执行此操作的谓词,而不需要动态声明:

add_to_db(Fact):-
   current_predicate(_, Fact),
   Fact, !.
add_to_db(Fact):-
  assertz(Fact).