具有多个谓词的 Prolog setOf
Prolog setOf with Multiple Predicates
在我的序言数据库中,我有以下事实:
played('Sharon rose', piano).
played('Robert Kay', piano).
played('Kelvin Cage', drums).
singer('Robert Kay').
band_leader('Sharon rose').
我想将所有名称唯一地打印为一个列表。
下面是我使用 setof 的查询和输出:
setof(X, (played(X,_);singer(X);band_leader(X)), Output).
Output = ['Robert Kay','Sharon rose'] ? ;
Output = ['Kelvin Cage'] ? ;
Output = ['Robert Kay','Sharon rose']
yes
但是,输出不是我想要的。
我希望它以列表形式唯一地打印出名称。
由于 setof/3
的目标参数中的匿名变量,您得到了多个答案。请尝试:
?- setof(X, Y^(played(X,Y);singer(X);band_leader(X)), Output).
在我的序言数据库中,我有以下事实:
played('Sharon rose', piano).
played('Robert Kay', piano).
played('Kelvin Cage', drums).
singer('Robert Kay').
band_leader('Sharon rose').
我想将所有名称唯一地打印为一个列表。
下面是我使用 setof 的查询和输出:
setof(X, (played(X,_);singer(X);band_leader(X)), Output).
Output = ['Robert Kay','Sharon rose'] ? ;
Output = ['Kelvin Cage'] ? ;
Output = ['Robert Kay','Sharon rose']
yes
但是,输出不是我想要的。 我希望它以列表形式唯一地打印出名称。
由于 setof/3
的目标参数中的匿名变量,您得到了多个答案。请尝试:
?- setof(X, Y^(played(X,Y);singer(X);band_leader(X)), Output).