有没有支持可伸缩数据库的 Prolog 实现?我的意思是,当 prolog 引擎通过此谓词调用回溯时,数据库会自动撤回由 assert() 谓词调用插入的事实?换句话说,我想要在回溯时“自动”隐式撤回。
类似的东西可以表达为
my_assert(Fact):- assert(Fact).
my_assert(Fact):- retract(Fact), fail.
但这在通过切割回溯时无法正常工作(!)
或者这个目标可以通过使用 Prolog 的“tabled”风格以某种方式实现?