是否有一个可以在Sicstus Prolog中使用的命令,它可以在控制台窗口中打印内置谓词列表?或者有类似行为的东西?
以下链接表明谓词apropos可用于根据关键字建议预测,但这适用于SWI-Prolog,而不是Sicstus。
答案 0 :(得分:3)
在SICStus Prolog中,您可以使用predicate_property/2
内置谓词列出内置谓词。例如:
| ?- predicate_property(P, built_in).
P = get_char(_A) ? ;
P = execution_state(_A) ? ;
...
如果您想要包含所有内置谓词的列表,请尝试:
| ?- findall(P, predicate_property(P, built_in), L).
L = [get_char(_A),execution_state(_B),nospy _C,print_coverage(_D),print_profile(_E),debugging,disable_breakpoints(_F),current_breakpoint(_G,_H,_I,_J,_K),execution_state(_L,_M),spy(...)|...] ?
yes
答案 1 :(得分:1)
current_predicate/1
由ISO定义,似乎至少可用于SICSTUS,SWI-Prolog和GNU-Prolog。
predicate_property/2
至少在这三个Prolog实现中也是可用的。
请注意,对于GNU-Prolog,如果要使用current_predicate/1
枚举内置函数,则必须首先关闭“strict_iso”:
| ?- current_predicate(P).
no
| ?- assertz(aaa).
yes
| ?- current_predicate(P).
P = aaa/0 ? ;
(1 ms) no
| ?- set_prolog_flag(strict_iso, off).
yes
| ?- current_predicate(P).
P = max_list/2 ? ;
P = at_end_of_stream/0 ? ;
P = at_end_of_stream/1 ? % and so on