比较prolog匿名变量
我在prolog中有一系列事实,其中包含匿名变量比较prolog匿名变量,prolog,prolog-anonymous-variable,Prolog,Prolog Anonymous Variable,我在prolog中有一系列事实,其中包含匿名变量\uu fact(a, _). fact(b, _). fact(c, _). 我有一些规则,包括这些事实的列表: f([H | T]) :- H == fact(a, _), % stuff % . 然而,这是行不通的。规则没有经过第一个子句H==fact(a,)。我做错了什么?是否有不同的相等运算符?是的,您可能应该使用=/2: 1 ?- H == fact(a,_). false.
\uu
fact(a, _).
fact(b, _).
fact(c, _).
我有一些规则,包括这些事实的列表:
f([H | T]) :- H == fact(a, _),
% stuff %
.
然而,这是行不通的。规则没有经过第一个子句
H==fact(a,)
。我做错了什么?是否有不同的相等运算符?是的,您可能应该使用=/2
:
1 ?- H == fact(a,_).
false.
2 ?- H = fact(a,_).
H = fact(a, _G0).
不同之处在于==/1
检查这两个术语是否相等,以及非实例化变量(名称不同)是否被视为不同的变量。另一方面,=/2
将这两个术语统一起来,根据需要进行实例化
如果在头部使用实例化模式(f([fact(a,|)T]):-stuff.
),它与=/2具有相同的行为