这可能是一个非常简单的问题 - 我只是在学习并坚持下去。
说我有类似的东西:
%facts
car(blah1, red).
car(blah2, blue).
car(blah3, red).
car(blah4, red).
car(blah5, black).
现在我想制定一个规则,如果我输入' blah'我会收回所有也是红色的等等。所以,例如,
%rule
is_same(Blah_x, Blah_y) :-
如果我输入is_same(blah1, X)
,则返回X = blah1, X = blah3, X = blah4
。如果我输入了is_same(blah1, blah2)
,则不会返回任何内容(因为blah1
为red
且blah2
为blue
。
答案 0 :(得分:4)
我相信这就是你要求的:
is_same(X, Y) :- car(X, Color), car(Y, Color).
示例输入和输出:
?- is_same(blah1, X).
X = blah1 ;
X = blah3 ;
X = blah4.
?- is_same(blah1, blah3).
true .
?- is_same(blah1, blah2).
false.