2014-01-24 83 views
1

我正在研究Prolog示例作爲教程。在這個例子中,我有零操作這樣的斷言:序言否操作數謂詞

print_all_solutions :- 
    findall(_,print_solution,_). 

我怎麼能叫控制檯print_all_solution? 當我問這在Prolog的控制檯我得到什麼:

?- print_all_solutions 

沒有回答,也:

?- print_all_solutions. 

沒有答案。

雖然我得到正確的答案像其他問題:

?- goal(state([],right,[a,b,c,d],12)). 
true. 

?- goal(state([],right,[a,b,c,d],19)). 
false. 

我應該如何問一個關於謂詞問題沒有操作數(/ 0),看到在控制檯解決?

+0

print_solutions是如何定義的。這完全取決於。 – false

回答

2

我想你的問題是要麼init(State)或更可能是solve(State,Solution,EndState)不起作用。

您需要調試:輸入這些命令你參考的資料文件

?- leash(-all),trace. 
?- print_solution. 

後,你會得到從Prolog的發動機

+0

謝謝,試了一下,跟蹤回答真實,但仍然沒有回答'print_solution'。 ' - 皮帶(-all),trace.' 'true.' '[跟蹤] - print_solution.' 沒有答案! – parisa

0

我乾脆在控制檯輸入一些這方面的線索:

findall(_,print_all_solutions,_). 

我得到了答案。

+2

奇怪的是,這會給出任何答案,但輸入'print_all_solutions.'不會給出答案。 'findall(_,print_all_solutions,_)'只是收集'print_all_solutions'提供的所有答案。 – lurker