Prolog通配符

1 prolog

我想知道,我将如何使用下划线两次,但检查下划线的两个实例是否统一?

我基本上需要的是,如果存在一个映射中具有相同值的两个元素,则返回true

IE member((_,_),[(a,a),(b,a),(c,a)]).

如果我使用变量那会使它们统一吗?

IE member((A,A),[(a,a),(b,a),(c,a)]).

但它返回变量而不是真.

我需要一些启示.

Jer*_*ome 5

您的变量解决方案是正确的.

返回变量是一种返回true的方法.这实际上意味着:当var = value时,这个目标是正确的,而不是这个目标是真的.

请注意,将其用作不同谓词中的子句将隐藏变量:

contains_identical_pair(List) :- member((A,A),List).
Run Code Online (Sandbox Code Playgroud)