Why not use a predicate with two clauses?
See recent post: How to identify if a predicate is a DCG?
build_export(M,Exports) :-
current_module(M), !,
setof(Predicate_indicator,local_predicate_generator(M:Predicate_indicator),Exports).
build_export(M,_) :-
format(string(Lines),'Module `~w'' not loaded.~nPlease use consult/1 or use_module/1 to load the module.~n',[M]),
print_message_lines(user_error,kind(error),[Lines]).