3

有没有办法列出在给定库模块中为 SICStus Prolog 定义的所有谓词?

例如,如果我加载列表模块:

| ?- use_module(library(lists)).

我可以从提示符运行另一个谓词来告诉我刚刚导入了哪些谓词?

4

1 回答 1

4

这适用于 SWI-Prolog,但谓词current_predicate/1被标记为“ISO”,所以至少在 SICTUS 中尝试一下。这是我得到的:

?- 使用模块(库(列表))。
真的。

?- current_predicate(列表:P)。
P = max_list/3 ;
P = 展平/2;
% 等等

或者可能:

?- findall(P, current_predicate(lists:P), Ps)。
Ps = [max_list/3, flatten/2, nth1/4, reverse/4, must_be/2, min_member_/3, reverse/2, transpose_pairs/2, ... / ...|...]。

您应该能够在任何实现的 Prolog 中执行此操作current_predicate/1

于 2015-07-16T14:16:35.770 回答