列出给定库模块中的谓词

Listing predicates within a given library module

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

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

| ?- use_module(library(lists)).

是否有另一个谓词我可以 运行 从提示中告诉我刚刚导入了哪些谓词?

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

?- use_module(library(lists)).
true.

?- current_predicate(lists:P).
P = max_list/3 ;
P = flatten/2 ;
% and so on

或者也许:

?- 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, ... / ...|...].

您应该能够在任何实现 current_predicate/1.

的 Prolog 中执行此操作