列表谓词的行为因Prolog解释器而异。该XSB documentation解释什么代码将被纳入上市/ 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).
SWI-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.
是只是使我的谓词动态化的问题,谢谢 – KP65 2010-03-12 19:23:51