列表谓词的行为因 Prolog 解释器而异。 XSB documentation 解释了 Listing/0 的输出中将包含哪些代码:
请注意,listing/0 没有列出任何
编译谓词,除非它们有
动态属性(见谓词
财产/2)。谓词获得
显式时的动态属性
声明为动态或自动
当某些条款时获得它
谓词在
数据库。
使用一个非常简单的 test.P 文件,其中包含:
test(a,b).
这里是在 XSB 中使用 Listing/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 的行为方式类似于 Learn Prolog Now 描述和输出两个文件的内容以及动态添加的规则:
?- 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.