Я начинающий с Пролога, и я хотел знать, как использовать ground/1
.
На данный момент у меня есть этот код:
intertwine([], [], []).
intertwine([E|Es], Fs, [E|Gs]) :- intertwine(Es, Fs, Gs).
intertwine(Es, [F|Fs], [F|Gs]) :- intertwine(Es, Fs, Gs).
Но когда я пытаюсь вызвать это в оболочке:
intertwine([1,2],X,[1,a,2,b]).
Я получаю правильный ответ X=[a,b]
, но запрос не заканчивается, как будто он думает, что остался другой ответ. Итак, я нажимаю ";" и я получаю «ложь» в качестве вывода. В ответе на другой вопрос я прочитал, что должен использовать ground/1
, чтобы проверить, полностью ли создан третий список для обработки дела.
Дело в том, что, будучи полным новичком, я понятия не имею, как это сделать. Так есть ли кто-то достаточно любезный, чтобы объяснить мне, как работает основание и как я могу использовать его для проверки создания экземпляра определенного параметра и использовать его, чтобы не проверять код для ответа, которого там нет?