Почему я получаю этот результат из рекурсивного запроса в Прологе - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь написать предикат пролога, который генерирует горизонтальную линию, используя SWI-Prolog 7. Я начал с простого генератора, на который ссылаются здесь: Простой генератор пролога

В игре вокругЯ пришел с результатом, которого я не понимаю.Если я создаю эти правила (hline должен взять две координаты x (X и A) и одну координату Y, и сгенерировать координаты X и Y горизонтальной линии в S и T:

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 были даже в одном и том же предложении посредством объединения или сокращения ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...