Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较prolog匿名变量_Prolog_Prolog Anonymous Variable - Fatal编程技术网

比较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.

我在prolog中有一系列事实,其中包含匿名变量
\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具有相同的行为