Module 如何使用清单1列出模块库(dcg/basics)的子句

Module 如何使用清单1列出模块库(dcg/basics)的子句,module,prolog,swi-prolog,dcg,Module,Prolog,Swi Prolog,Dcg,SWI Prolog具有用于的 而引用模块则很容易,例如 尝试使用它并不那么容易 ?- listing(dcg:_). true. ?- listing(dcgbasics:_). true. ?- basics:listing. true. 获取库(dcg/basics)中的子句列表的正确方法是什么 在给出答案后进行跟进 要列出特定子句,例如空格//0查询 ?- listing(dcg_basics:blanks). blanks(A, B) :- blank(A, C),

SWI Prolog具有用于的

而引用模块则很容易,例如

尝试使用它并不那么容易

?- listing(dcg:_).
true.

?- listing(dcgbasics:_).
true.

?- basics:listing.
true.
获取
库(dcg/basics)
中的子句列表的正确方法是什么


在给出答案后进行跟进

要列出特定子句,例如
空格//0
查询

?- listing(dcg_basics:blanks).
blanks(A, B) :-
    blank(A, C),
    !,
    D=C,
    blanks(D, B).
blanks(A, A).

true.
使用以下任一选项:

?- dcg_basics:listing.
或:

use\u module/1-2
的第一个参数是文件规范,而不是模块名称。但是列出模块内容需要实际的模块名,它可能与模块文件basename不同(这里就是这种情况)。但是如何从文件规范中找到模块名呢?在SWI Prolog的特殊情况下:

?- absolute_file_name(library(dcg/basics), Path, [extensions([pl])]),
   module_property(Module, file(Path)).
Path = '/Users/pmoura/lib/swipl/library/dcg/basics.pl',
Module = dcg_basics.

一个(老式的)用户友好的选项是使用XPCE:`?-edit(library(dcg/basics))`然后使用^C^N(即打开导航器)。@capelical谢谢。我不使用XPCE。现在我的任务栏上有大约8个编辑器和IDE,更不用说其他没有为任务栏位置打分的编辑器和IDE了,我认为我的大脑没有空间容纳其他编辑器和IDE。很遗憾。。。IMO XPCE是一个很好的IDE,只是开始的一小步。在过去和现在,我使用了很多,但如果可能的话,我更喜欢简单,所以最终本地主机上的Firefox是我今天真正的IDE。@谢谢你的推动。似乎所有更高级的SWI Prolog用户都在使用它,最近我确实发现自己在使用SWI Prolog时需要IDE的功能。我会把学习放在更高的优先级上,但不是在接下来的几周内。:)
?- listing(dcg_basics:_).
?- absolute_file_name(library(dcg/basics), Path, [extensions([pl])]),
   module_property(Module, file(Path)).
Path = '/Users/pmoura/lib/swipl/library/dcg/basics.pl',
Module = dcg_basics.