]> Repositorios git - scryer-prolog.git/commitdiff
add consult/1 and shorthand for consult/1 (#214)
authorMark Thom <[email protected]>
Sun, 27 Oct 2019 17:33:49 +0000 (11:33 -0600)
committerMark Thom <[email protected]>
Sun, 27 Oct 2019 17:33:49 +0000 (11:33 -0600)
src/prolog/toplevel.pl

index 0277b1a63e5d657a30ccd3cffca5ad2fadd86f86..9a29d7afe973007c922d9325f4e3f98c8c90f6a1 100644 (file)
 % make '$compile_batch', a system routine, callable.
 '$$compile_batch' :- '$compile_batch'.
 
-'$instruction_match'([user], []) :-
-    !, catch('$$compile_batch', E, '$print_exception_with_check'(E)).
+'$instruction_match'([Item], []) :-
+    (  atom(Item) ->
+       (  Item == user ->
+         !,
+         catch('$$compile_batch', E, '$print_exception_with_check'(E))
+       ;  consult(Item)
+       )
+    ;  catch(throw(error(type_error(atom, Item), repl/0)),
+            '$print_exception_with_check'(E))
+    ).
 '$instruction_match'(Term, VarList) :-
     '$submit_query_and_print_results'(Term, VarList),
     !.
     ;  throw(error(instantiation_error, Source))
     ).
 
+consult(Item) :-
+    (  atom(Item) -> use_module(Item)
+    ;  throw(error(type_error(atom, Item), consult/1))
+    ).
+
 use_module(Module) :-
     (  nonvar(Module) ->
        (  Module = library(Filename) -> '$use_module'(Filename)
@@ -101,7 +114,7 @@ expand_goals(Goals, ExpandedGoals) :-
        ;  expand_goals(Goals0, Goals1),
          ExpandedGoals = (Goal0, Goals1)
        )
-    ;  expand_goal(Goals, ExpandedGoals0) ->     
+    ;  expand_goal(Goals, ExpandedGoals0) ->
        thread_goals(ExpandedGoals0, ExpandedGoals)
     ;  Goals = ExpandedGoals
     ).