2016-03-08 85 views
1

我在課堂上學習Prolog,並顯示了一種自動按分號鍵直到沒有更多解決方案的方法。我試圖在谷歌上搜索,但我使用findall的例子,這不是顯示。有沒有其他方法可以在Prolog shell中自動按;如何在Prolog中自動化分號

例如,顯示所有解決方案而不反覆按;

X = one ; 
X = two ; 
X = three ; 
X = four. 
+1

GNU的Prolog的頂層允許這;' – false

回答

1

一個簡單的解決方案,使用了member/2用於舉例說明,是使用fail/0謂詞的目標之後:直接代替``按壓A`

?- member(X, [1,2,3]), writeq(X), nl, fail. 
1 
2 
3 
false. 
+0

我應該在我的文章中更加清楚,我想要調用謂詞'number(X)'生成的所有解決方案。我沒有清單。 –

+0

'member'和'number'之後的數字是什麼意思? –

+2

@RowenMcDaniel'member/2'表示'member'是一個有2個參數的函數。而且,Paulo的解決方案即使在你的情況下也能工作。你只需要想一想:'my_predicate(X),writeq(X),nl。 fail.'。 'member(X,[1,2,3])'只是一個爲'X'生成多個解決方案的謂詞調用的例子。 – lurker