From 7cdbd2f16c570bfb4952aa6a8b0252cc54e18c1c Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Sun, 27 Oct 2019 11:33:49 -0600 Subject: [PATCH] add consult/1 and shorthand for consult/1 (#214) --- src/prolog/toplevel.pl | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/prolog/toplevel.pl b/src/prolog/toplevel.pl index 0277b1a6..9a29d7af 100644 --- a/src/prolog/toplevel.pl +++ b/src/prolog/toplevel.pl @@ -27,8 +27,16 @@ % 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), !. @@ -61,6 +69,11 @@ ; 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 ). -- 2.54.0