Prolog:用户输入和多个输出

时间:2012-06-21 16:21:19

标签: prolog user-input

student(foo).
student(bar).

KB

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 个答案:

答案 0 :(得分:1)

添加

findall(A, ask(S,A), AllAnswers).

而不是

ask(S,A).

这样,当ask(S,A)成功时,AllAnswers将匹配A的所有可能值的列表。