我是 Prolog 的初学者,我想知道如何使用ground/1
.
目前我有这个代码:
intertwine([], [], []).
intertwine([E|Es], Fs, [E|Gs]) :- intertwine(Es, Fs, Gs).
intertwine(Es, [F|Fs], [F|Gs]) :- intertwine(Es, Fs, Gs).
但是当我尝试在 shell 中调用它时:
intertwine([1,2],X,[1,a,2,b]).
我得到了正确的答案X=[a,b]
,但查询并没有结束,好像它认为还有另一个答案。所以,我按“;” 我得到“假”作为输出。我读了另一个问题的答案,我应该用它ground/1
来检查第三个列表是否已经完全实例化来处理这个案例。
问题是,作为一个完整的初学者,我不知道该怎么做。那么有没有人好心地向我解释 ground 是如何工作的,以及我如何使用它来检查特定参数的实例化并使用它来不让代码检查不存在的答案?