質問

私は、私はあなたがassertされる述語を宣言しているが、これはのみ行われた変更のみが、例えばそのセッションで保持されることを可能にする場合は、事実やルールまたは何を追加するために-:dynamicを使用することができます知っています、思っていましたあなたはプロローグウィンドウを閉じる場合は、データベースの変更は失われます。

だから私はassertretract述語は、Prologの.plのファイルに永続的な変更を行うことができるように、それを作るのいずれかの方法があり、不思議でしたか?

おかげ

役に立ちましたか?

解決

私はあなたにこれを行うのは非常に簡単な方法を提案することができます。

1 ?- assert(a(1)).
true.

2 ?- assert(a(2)).
true.

3 ?- assert(a(3)).
true.

4 ?- a(A).
A = 1 ;
A = 2 ;
A = 3.

5 ?- tell('a_db.txt'), listing(a), told.
true.

[閉じるセッション、再度開きます。

1 ?- a(A).
ERROR: toplevel: Undefined procedure: a/1 (DWIM could not correct goal)
2 ?- ['a_db.txt'].
% a_db.txt compiled 0.00 sec, 516 bytes
true.

3 ?- a(A).
A = 1 ;
A = 2 ;
A = 3.

4 ?- listing(a).
:- dynamic a/1.

a(1).
a(2).
a(3).

true.
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top