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