为什么我从Prolog中的递归查询得到此结果

时间:2018-10-17 20:59:25

标签: prolog

我试图编写一个Prolog谓词,该谓词使用SWI-Prolog 7生成一条水平线。我从这里引用的一个简单生成器开始:Simple Prolog generator

在玩耍时,我想出了一个我不明白的结果。如果我创建这些规则(hline打算使用两个x坐标(X和A)和一个Y坐标Y,并在S和T中生成水平线的X和Y坐标:

gen(Cur, Top, Cur) :- =<(Cur, Top). 
gen(Cur, Top, Next):- =<(Cur, Top), is(Cur1, +(Cur, 1)), gen(Cur1, Top, Next).
hline(X,A,Y,S,T) :- gen(X,A,S), T is Y.

当我运行此查询时:

hline(0,5,0,X,Y).

我得到这些结果。第一个是我不了解的:

X = Y, Y = 0
X = 1,
Y = 0
X = 2,
Y = 0
X = 3,
Y = 0
X = 4,
Y = 0
X = 5,
Y = 0

有人可以解释为什么第一个结果是X = Y,Y = 0吗?通过统一或归约,我什至看不到X和Y甚至在同一子句中。

0 个答案:

没有答案