列表謂詞的行爲因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