序言检查a或b是否存在

时间:2020-03-10 19:53:29

标签: prolog

我想写一条规则,让我检查给定事实中是否存在电影或演员。

事实事实

starsin(ice_age,compton__doug).
starsin(hulk,wryn__rhiannon_leigh).
starsin(hulk,turman__john).
starsin(hook,mcnatt__adam). 

查询输入

?- exists(ice_age).
true.
?- exists(turman_john).
true
?- exists(bob).
false

书面规则

exists(Movie,Actor) :- starsin(Movie,Actor).

我的问题是我的规则是它不检查电影或演员。我被迫输入查询:

?- exists(hulk,Y) or exists(X,turman_john) 

我要检查电影或演员。帮助。

1 个答案:

答案 0 :(得分:1)

您可以简单地检查所查询的项目是否可以与starsin/2事实之一的第一个或第二个参数统一:

exists(Movie) :-
    starsin(Movie, _).
exists(Actor) :-
    starsin(_, Actor).

下划线_是我们不关心的变量。