作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道,我知道你可以使用 assert
添加事实或规则或其他任何内容,如果您已将谓词声明为 -:dynamic
,但这仅允许所做的更改仅保留在该 session 中,例如如果关闭 Prolog 窗口,则数据库更改将丢失。
所以我想知道,有什么办法可以让 assert
和 retract
谓词可以对 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.
关于序言 - 断言和撤回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2435237/
我是一名优秀的程序员,十分优秀!