From 2df40836020079d3081cc8df1d750b19084ae8f8 Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Wed, 29 Apr 2020 11:05:10 -0300 Subject: [PATCH] use select to filter variable lists when printing equations of two variables --- src/prolog/toplevel.pl | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/prolog/toplevel.pl b/src/prolog/toplevel.pl index af94cffb..7072017d 100644 --- a/src/prolog/toplevel.pl +++ b/src/prolog/toplevel.pl @@ -78,7 +78,7 @@ needs_bracketing(Value, Op) :- memberchk(EqSpec, [fx,xfx,yfx]) ). -write_goal(G, VarList, MasterVarList, MaxDepth) :- +write_goal(G, VarList, MaxDepth) :- ( G = (Var = Value) -> ( var(Value) -> select((Var = _), VarList, NewVarList) @@ -94,10 +94,10 @@ write_goal(G, VarList, MasterVarList, MaxDepth) :- ) ; G == [] -> write('true') - ; write_term(G, [quoted(true), variable_names(MasterVarList), max_depth(MaxDepth)]) + ; write_term(G, [quoted(true), variable_names(VarList), max_depth(MaxDepth)]) ). -write_last_goal(G, VarList, MasterVarList, MaxDepth) :- +write_last_goal(G, VarList, MaxDepth) :- ( G = (Var = Value) -> ( var(Value) -> select((Var = _), VarList, NewVarList) @@ -117,16 +117,16 @@ write_last_goal(G, VarList, MasterVarList, MaxDepth) :- ) ; G == [] -> write('true') - ; write_term(G, [quoted(true), variable_names(MasterVarList), max_depth(MaxDepth)]) + ; write_term(G, [quoted(true), variable_names(VarList), max_depth(MaxDepth)]) ). -write_eq((G1, G2), VarList, MasterVarList, MaxDepth) :- +write_eq((G1, G2), VarList, MaxDepth) :- !, - write_goal(G1, VarList, MasterVarList, MaxDepth), + write_goal(G1, VarList, MaxDepth), write(', '), - write_eq(G2, VarList, MasterVarList, MaxDepth). -write_eq(G, VarList, MasterVarList, MaxDepth) :- - write_last_goal(G, VarList, MasterVarList, MaxDepth). + write_eq(G2, VarList, MaxDepth). +write_eq(G, VarList, MaxDepth) :- + write_last_goal(G, VarList, MaxDepth). graphic_token_char(C) :- memberchk(C, ['#', '$', '&', '*', '+', '-', '.', ('/'), ':', @@ -154,14 +154,14 @@ write_eqs_and_read_input(B, VarList) :- ), ( B0 == B -> ( Goals == [] -> - write('true.'), nl + write('true.'), nl ; thread_goals(Goals, ThreadedGoals, (',')), - write_eq(ThreadedGoals, NewVarList, NewVarList, 20), - write('.'), - nl + write_eq(ThreadedGoals, NewVarList, 20), + write('.'), + nl ) ; thread_goals(Goals, ThreadedGoals, (',')), - write_eq(ThreadedGoals, NewVarList, NewVarList, 20), + write_eq(ThreadedGoals, NewVarList, 20), read_input(ThreadedGoals, NewVarList) ). @@ -170,12 +170,12 @@ read_input(ThreadedGoals, NewVarList) :- ( C = w -> nl, write(' '), - write_eq(ThreadedGoals, NewVarList, NewVarList, 0), + write_eq(ThreadedGoals, NewVarList, 0), read_input(ThreadedGoals, NewVarList) ; C = p -> nl, write(' '), - write_eq(ThreadedGoals, NewVarList, NewVarList, 20), + write_eq(ThreadedGoals, NewVarList, 20), read_input(ThreadedGoals, NewVarList) ; member(C, [';', ' ', n]) -> nl, write('; '), false -- 2.54.0