summaryrefslogtreecommitdiff
path: root/loader.pl
diff options
context:
space:
mode:
Diffstat (limited to 'loader.pl')
-rw-r--r--loader.pl14
1 files changed, 13 insertions, 1 deletions
diff --git a/loader.pl b/loader.pl
index 9126c1f..69fc2f9 100644
--- a/loader.pl
+++ b/loader.pl
@@ -70,8 +70,20 @@ handle_clause(Head, Body, Singletons, Module) :-
functor(Head, Name, Arity),
PredicateIndicator = Name / Arity,
warn_singletons(PredicateIndicator, Singletons),
- Module:assertz(Head :- Body).
+ Module:'$insert_clause'(Head :- Body).
+handle_directive(dynamic(PI), Module, Module) :-
+ is_nonvar(PI),
+ ( list(PI)
+ -> [First|Rest] = PI,
+ handle_directive(dynamic(First), Module, Module),
+ handle_directive(dynamic(Rest), Module, Module)
+ ; is_predicate_indicator(PI),
+ Name / Arity = PI,
+ functor(Tmp, Name, Arity),
+ Module:asserta(Tmp),
+ Module:retract(Tmp)
+ ).
handle_directive(op(Priority, Specifier, Operator), Module, Module) :-
Module:op(Priority, Specifier, Operator).
handle_directive(include(F), Module, NewModule) :-