在 Prolog 中,给定一个事实知识库:
someFact(one).
someFact(two).
otherFact(one, two, 123, 456).
otherFact(one, four, 789, 123).
查询setof(X, someFact(X), List).
产生以下结果:
List = [one, two]
但是,查询setof(X, otherFact(one, X,_,_), List
会产生以下结果:
List = [two]
虽然我预计它会产生[two,four]
. 使用此来源,我发现;
在返回第一个列表时键入将显示所有其他选项:
List = [two] ;
List = [four] .
为什么这样做?是因为下划线吗?如何在不按two
和的情况下生成一个集合?我不知道如何找到答案,因为我无法将这个问题转化为产生搜索结果的问题four
;