リトラクタブル データベースをサポートする Prolog 実装はありますか? プロローグエンジンがこの述語呼び出しをバックトラックしたときに、 assert() 述語呼び出しによって挿入された事実を自動的に撤回するデータベースを意味しますか? 言い換えれば、バックトラッキングで「自動」の暗黙の撤回が必要です。
似たようなものは、次のように表現できます。
my_assert(Fact):- assert(Fact).
my_assert(Fact):- retract(Fact), fail.
しかし、カットをバックトラックしている間は正しく動作しません (!)
または、この目標は、Prolog の「テーブル化された」フレーバーを使用して何らかの方法で達成される可能性がありますか?