我是一個完整的初學者,我想知道如何使用ground/1
。如何使用地面/ 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
來檢查第三個列表是否已經完全實例化以處理該案例。
事情是,作爲一個完整的初學者,我不知道該怎麼做。那麼是否有足夠的人向我解釋工作原理以及如何使用它來檢查特定參數的實例化,以及如何使用代碼檢查不存在的答案?
@Dimitri:intertwine(Xs,Ys,[1])。應該有兩個解決方案,而不是一個。有一個簡單的經驗法則:沒有任何模式相關的測試單獨切割幾乎總是削減有效的解決方案。 – false
是的。其實我並沒有完全明白OP的真正需要。 –