不要关心Prolog

时间:2014-04-28 15:38:06

标签: prolog

有没有办法告诉Prolog列表中的元素可以是任何值? 我尝试使用_,但它没有用。 我试图比较两个零和一个列表,但在某些地方我并不关心价值,例如:我希望[1,1,1] == [1,1,_]返回true其中{{1}是我不关心它的价值

的元素

2 个答案:

答案 0 :(得分:6)

请改用以下内容:

[1,1,1] = [1,1,_]

==/2测试等价,强于=/2(实例化)。

答案 1 :(得分:0)

非统一替代方案:

forall(nth1(X, [1,1,1], Val), nth1(X, [1,1,_], Val)).

一些示例输入和输出显示差异的位置:

compare_lists(List1, List2) :-
     forall(nth1(Index, List1, Value), nth1(Index, List2, Value)).

test_compare(CompPred, ComparedList) :-
    call(CompPred, ComparedList, [1,1,_]).

?- test_compare(=, [X,1,1]), print(X).
1
X = 1.

?- test_compare(=@=, [X,1,1]), print(X).
false.

?- test_compare(==, [X,1,1]), print(X).
false.

?- test_compare(compare_lists, [X,1,1]), print(X).
_G648
true.