2010-07-22 66 views
3

我寫了一個謂詞common_participant(Person, PairEvent)。它從我的知識庫中返回一些事實。我想知道是否有任何方法來執行變量綁定,並收集所有結果,而不是每次都使用分號。Prolog中的變量綁定

感謝,

+0

我不確定我是否理解這個問題。每次都是什麼? – Gian 2010-07-22 15:58:56

回答

1

是的,你可以使用findall/3。但取決於你真正想做什麼,通常有更好的方法。你想輸出東西嗎?那就試試這個:

print_participants :- 
    common_participant(Person, PairEvent), 
    write(Person), write(' participates in '), write(PairEvent), write('.'), nl, 
    fail. 
print_participants :- 
    true. 

這樣,你不需要把所有的組合在大名單在同一時間,但只限於打印所需要的人。

編輯:修復代碼,如Kaarel建議。

+0

您的print_participants/0不會打印所有解決方案,除非您使用分號(OP要避免的),或稱其爲「print_participants,失敗;爲真」。 – Kaarel 2010-07-23 01:36:05

+0

我修復了代碼。順便說一句,我解釋了這樣一個問題,例如「我不想一直按分號鍵,只是爲了得到所有答案」。所以我認爲代碼中的分號並不重要。 – 2010-07-23 16:32:12

+0

是的,這就是我的意思是羅蘭,非常感謝你。它工作正常。 – paranza 2010-07-30 15:05:03