是否有方法列出在SICStus Prolog的给定库模块中定义的所有谓词?
e.g。如果我加载列表模块:
| ?- use_module(library(lists)).
是否有另一个谓词我可以从提示符中运行,告诉我刚刚导入了哪些谓词?
答案 0 :(得分:4)
这适用于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中执行此操作。