diff options
Diffstat (limited to 'loader.pl')
-rw-r--r-- | loader.pl | 14 |
1 files changed, 13 insertions, 1 deletions
@@ -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) :- |