以下代码给出了这些结果:
?- X = a, findall(Element, ( member(Z, [a,b,c]), Element = Z:X ), Set).
X = a,
Set = [a:a, b:a, c:a].
但是,当我希望所有元素都共享相同的未绑定变量(而不是 a)时,事情就不会像预期的那样工作:
?- X = Y, findall(Element, ( member(Z, [a,b,c]), Element = Z:X ), Set).
X = Y,
Set = [a:_G1918, b:_G1912, c:_G1906].
为什么 _G1918、_G1912 和 _G1906 不相互绑定?这是 swi-prolog 中的错误吗?