首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单问题- XSB Prolog

简单问题- XSB Prolog
EN

Stack Overflow用户
提问于 2010-03-11 22:12:13
回答 1查看 1.2K关注 0票数 1

我正一头扎进prolog的世界,但我似乎碰到了浅水区!

关于本教程,我正在研究prolog中的数据库操作:Learn Prolog Now!

它说明我可以通过输入listing来查看我的数据库

所以我尝试了一下,它基本上应该输出我的.P文件中的所有内容(事实、规则),但这就是我得到的结果,以下是我的命令序列:

代码语言:javascript
复制
? 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来添加更多的事实,但是它实际上并没有改变测试文件中的任何东西。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-12 08:48:59

清单谓词的行为因Prolog解释器而异。XSB documentation解释哪些代码将包含在listing/0的输出中:

请注意,列表/0不会列出任何已编译的谓词,除非它们具有动态属性(请参见谓词属性/2)。谓词在显式声明为dynamic时获取动态属性,或者在数据库中断言该谓词的某些子句时自动获取该属性。

使用一个非常简单的test.P文件,其中包含以下内容:

代码语言:javascript
复制
test(a,b).

这里使用XSB中的file /0和咨询文件和断言规则。它只输出动态断言的规则,而不输出文件的内容:

代码语言:javascript
复制
| ?- 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现在描述和输出文件内容和动态添加的规则的方式相同:

代码语言:javascript
复制
?- 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.
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2425556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档