Skip to content

Instantly share code, notes, and snippets.

@mndrix
Created May 16, 2014 21:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mndrix/698f3a3c2d12b8f14021 to your computer and use it in GitHub Desktop.
Save mndrix/698f3a3c2d12b8f14021 to your computer and use it in GitHub Desktop.
Experiments with Prolog imports and exports from modules
:- module(bar, [ bar_a/0 ]).
do_import(TargetModule) :-
%TargetModule:use_module(bar, [bar_a/0]).
%TargetModule:import(bar:bar_a/0).
TargetModule:assert((bar_a :- writeln("Asserted bar_a/0"))).
bar_a :-
writeln("Inside bar_a/0").
:- module(foo, []).
main :-
writeln("Loading bar module"),
load_files(bar,[if(not_loaded),must_be_module(true),imports([])]),
writeln("We don't have bar_a/0 yet"),
\+ current_predicate(foo:bar_a/0),
writeln("Asking bar to perform an import"),
bar:do_import(foo),
writeln("We do have bar_a/0 now"),
current_predicate(foo:bar_a/0),
writeln("Calling bar_a/0"),
bar_a.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment