如果这是一个愚蠢的问题,请原谅我,但我是 Prolog 的初学者(到目前为止已经有几个小时了!)并且有点困惑。不确定我是否在尝试做超出我水平的事情。
想象一下我有一组人...
parent(daddy, john).
parent(daddy, jim).
...和以下谓词来查找兄弟姐妹...
sib(X, Y) :- parent(Z, X), parent(Z, Y), not(X = Y).
如果我运行
sib(X, Y).
,它工作正常,但给我重复项,例如...
X = jim,
Y = john ;
X = john,
Y = jim ;
false
我在想办法避免重复。
我看到了this answer,它使用了
setof
,并花了一些时间阅读了那个谓词,但是a)无法确定它是否是我需要的,b)不能(还)理解它。
有人能帮助新手吗?谢谢
以防万一,我在 Ubuntu 上使用 SWI-Prolog