Prolog 查询结果变量而不是值

Prolog 查询结果变量而不是值,prolog,Prolog,我编写了以下prolog代码: f(x, y, z). g(f(X, Y, Z), Y). 当我使用查询g(X,Y)。我希望得到结果X=f(X,Y,z),Y=Y,但我得到的结果是X=f(_3122,Y,_3126)。 当我输入g(f(X,Y,Z),Y1)。结果是Y=Y1 为什么第一个查询只匹配X,而不匹配Y? 为什么输出是\u3122/\u3126而不是值x和z?因为在g(f(x,Y,z),Y)中使用大写字母。!!!这是因为g应该输出所有fs的第二个值,而不仅仅是一个值。你不应该有形式的事实

我编写了以下prolog代码:

f(x, y, z).

g(f(X, Y, Z), Y).
当我使用查询
g(X,Y)。
我希望得到结果
X=f(X,Y,z),Y=Y
,但我得到的结果是
X=f(_3122,Y,_3126)。
当我输入
g(f(X,Y,Z),Y1)。
结果是
Y=Y1

为什么第一个查询只匹配
X
,而不匹配
Y

为什么输出是
\u3122
/
\u3126
而不是值
x
z

因为在
g(f(x,Y,z),Y)中使用大写字母。
!!!这是因为
g
应该输出所有
f
s的第二个值,而不仅仅是一个值。你不应该有形式的事实
g(f(X,Y,Z),Y)。
但是形式的事实
g(f(X,Y,Z),Y)。
或者更好的
g(f(X,Y,Z),Y):-f(X,Y,Y),Z)。
这些都会起作用的……非常感谢你。这是它应该做的。很高兴能帮上忙!!!