私は小さなPrologプログラムを書いています。それは次のように何かをすることが期待されています:
?-input([allan,is,a,name]).
true.
?-input([Is,allan,a,name]).
true.
そしてここに私のコードがあります:
% Simple answering agent
input(Text) :-
phrase(sentence(S), Text),
perform(S).
sentence(statement(S)) --> statement(S).
sentence(query(Q)) --> query(Q).
statement(Statement) -->
[Thing, 'is', 'a', Category],
{ Statement =.. [Category, Thing]}.
query(Query) -->
['Is', Thing, 'a', Category],
{ Query =.. [Category, Thing]}.
perform(statement(S)) :- asserta(S).
perform(query(Q)) :- Q.
パーツは正常に動作してinput([allan,is,a,name]).
いるように見えますが、クエリパーツに問題があり、入力するinput([Is,allan,a,name]).
と出力されます。
Is = 'Is'
誰かが私のためにこの問題を見てくれませんか、ありがとう。