2012-06-21 32 views
0
student(foo). 
student(bar). 

KBProlog的:用戶輸入和多個輸出

ask(Q) :- ask(Q,A). 
ask(Q,A) :- ..... 

問(Q,A)採用一個問題在由getsentence(S)生成的鏈接列表的形式。

run(A) :- 
    write('enter question/statement: '), 
    getsentence(S), nl, 
    ask(S,A). 

/* 
1 ?- ask([who,is,a,student],A). 
A = foo ; 
A = bar ; 
false. 

2 ?- run(A). 
enter question/statement:who is a student. 


A = foo . 

*/ 

只有一個結果顯示出來而不是多個作爲輸出。我覺得我錯過了很簡單的事情,但我不知道它是什麼。

回答

1

代替

ask(S,A). 

這樣AllAnswers問(S,A)成功時,將匹配A的所有可能值的列表。