简单问题-XSB Prolog
我头朝前跳进了prolog的世界,但我似乎已经到了浅水区 关于本教程,我将在prolog中介绍数据库操作: 它表示我可以通过输入简单问题-XSB Prolog,prolog,Prolog,我头朝前跳进了prolog的世界,但我似乎已经到了浅水区 关于本教程,我将在prolog中介绍数据库操作: 它表示我可以通过输入列表查看我的数据库 所以我尝试了它,它应该基本上输出我的.p文件中的所有内容(事实、规则),但这就是我得到的,下面是我的命令序列: ? consult('D:\Prolog\testfile.P'). [testfile.P loaded] ? listing. library_directory(C:blahblahpathtoXSB) library_direc
列表查看我的数据库
所以我尝试了它,它应该基本上输出我的.p文件中的所有内容(事实、规则),但这就是我得到的,下面是我的命令序列:
? consult('D:\Prolog\testfile.P').
[testfile.P loaded]
? listing.
library_directory(C:blahblahpathtoXSB)
library_directory(C:blahblahXSBpath)
{this is listed around 5 times)}
根据教程,这个命令不应该显示testfile.p中的内容吗?
另外,在查阅testfile.P之后,我应该能够使用assert
添加更多事实,但它实际上没有改变testfile.P中的任何内容
任何想法列表谓词的行为因Prolog解释器而异。说明清单/0的输出中将包含哪些代码:
请注意,清单/0没有列出任何
编译谓词,除非它们
动态属性(请参见谓词
财产(2)。谓词得到
动态属性,当它显式
声明为动态或自动
当它的某些子句
谓词在
数据库
使用包含以下内容的非常简单的test.p文件:
test(a,b).
这里使用XSB中的清单/0,同时使用参考文件和断言规则。它只输出动态断言的规则,而不输出文件的内容:
| ?- consult('test.P').
[test loaded]
yes
| ?- listing.
library_directory(/home/jeffd/xsb/XSB/packages).
library_directory(/home/jeffd/xsb/XSB/site/lib).
library_directory(/home/jeffd/xsb/XSB/site/config/i686-pc-linux-gnu/lib).
library_directory(/home/jeffd/xsb/XSB/config/i686-pc-linux-gnu/lib).
library_directory(/home/jeffd/.xsb/config/i686-pc-linux-gnu).
yes
| ?- assert(testing(c,d)).
yes
| ?- listing.
testing(c,d).
library_directory(/home/jeffd/xsb/XSB/packages).
library_directory(/home/jeffd/xsb/XSB/site/lib).
library_directory(/home/jeffd/xsb/XSB/site/config/i686-pc-linux-gnu/lib).
library_directory(/home/jeffd/xsb/XSB/config/i686-pc-linux-gnu/lib).
library_directory(/home/jeffd/.xsb/config/i686-pc-linux-gnu).
行为方式与Learn Prolog现在描述和输出文件内容以及动态添加的规则的方式相同:
?- consult('test.P').
% test.P compiled 0.00 sec, 1,192 bytes
true.
?- assert(testing(c,d)).
true.
?- listing.
test(a, b).
% Foreign: rl_read_history/1
:- dynamic testing/2.
testing(c, d).
% Foreign: rl_write_history/1
% Foreign: rl_add_history/1
% Foreign: rl_read_init_file/1
true.
这只是让我的谓词动态化的问题,谢谢