0
student(foo).
student(bar).

KB

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

ask(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 つの結果のみが表示されます。非常に単純なものが欠けているように感じますが、それが何であるかはわかりません。

4

1 に答える 1

1

追加

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

それ以外の

ask(S,A).

このようにして、ask(S,A) が成功すると、AllAnswers は A のすべての可能な値のリストと一致します。

于 2012-06-25T23:37:50.940 に答える