From: Mark Thom Date: Sun, 27 Oct 2019 17:33:49 +0000 (-0600) Subject: add consult/1 and shorthand for consult/1 (#214) X-Git-Tag: v0.8.116~13 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=7cdbd2f16c570bfb4952aa6a8b0252cc54e18c1c;p=scryer-prolog.git add consult/1 and shorthand for consult/1 (#214) --- 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 ).