Список предикатов в заданном библиотечном модуле

Есть ли способ составить список всех предикатов, определенных в данном библиотечном модуле для SICStus Prolog?

например если я загружу модуль списков:

| ?- use_module(library(lists)).

есть ли другой предикат, который я могу запустить из приглашения, чтобы сказать мне, какие предикаты были только что импортированы?


person bph    schedule 16.07.2015    source источник


Ответы (1)


Это работает с 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.

person Community    schedule 16.07.2015
comment
@bph Если это так, вы можете рассмотреть возможность удаления флага sicstus из вашего вопроса и замены его на iso-prolog? - person ; 16.07.2015