0

私はPrologを初めて使用し、学習しようとしています。

私のプログラムでは、「の型」である文字列のペアをユーザーに提供してもらいたいと考えています。

たとえば、ユーザーはコマンド ラインで文字列「john」と「man」を指定します。これらのアトムは、等しくなるように作成されます。つまり、john(man) です。

次のプロンプトで、ユーザーが「man」と「tall」を入力すると、プログラムはこれらが有効であると断言します (man(tall))。

次に、ユーザーはプログラムにクエリを実行して、「ジョンは背が高いですか?」と尋ねることができます。または Prolog では: john(tall) は推移的なプロパティによって true になります。

ユーザーの入力から文字列を解析し、それらを変数に割り当てることができましSubjectObject.

私は句を試しました(SubjectとObjectは異なる文字列です):

attribute(Subject, Object) :-
   assert(term_to_atom(_ , Subject),
   term_to_atom(_ , Object)).

Subject と Object が有効なペアであるという事実を主張したいと思います。ユーザーがそれを主張すると、それらは一緒に属します。このペアの同等性を強制するにはどうすればよいですか?

これについて最善の方法は何ですか?

4

2 に答える 2

1

可変ファクト ヘッドを使用しないでください。Prolog は、用語名のセットが固定されている場合に最適に機能します。代わりに、定義済みの静的な用語名を使用して、プロパティを格納するための一般的な場所を作成します。次に例を示します。

is_a(john, man).

property(man, tall).
property(john, thin).

(通常の形式の SQL テーブルを考えてください)。次に、 simpleassertz/1を使用してデータベースを更新できます。

add_property(X, Y) :- assertz(property(X, Y)).
于 2013-04-25T17:05:20.693 に答える