简单问题-XSB Prolog

简单问题-XSB Prolog,prolog,Prolog,我头朝前跳进了prolog的世界,但我似乎已经到了浅水区 关于本教程,我将在prolog中介绍数据库操作: 它表示我可以通过输入列表查看我的数据库 所以我尝试了它,它应该基本上输出我的.p文件中的所有内容(事实、规则),但这就是我得到的,下面是我的命令序列: ? consult('D:\Prolog\testfile.P'). [testfile.P loaded] ? listing. library_directory(C:blahblahpathtoXSB) library_direc

我头朝前跳进了prolog的世界,但我似乎已经到了浅水区

关于本教程,我将在prolog中介绍数据库操作:

它表示我可以通过输入
列表查看我的数据库

所以我尝试了它,它应该基本上输出我的.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.

这只是让我的谓词动态化的问题,谢谢