From: Mark Thom Date: Wed, 29 Apr 2020 13:56:17 +0000 (-0300) Subject: select variable names in write_eq based on whether RHS is a variable (#326) X-Git-Tag: v0.8.123~97 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=2495fb796d19dbb1932405a51be715ac3e6c1fb3;p=scryer-prolog.git select variable names in write_eq based on whether RHS is a variable (#326) --- diff --git a/src/prolog/toplevel.pl b/src/prolog/toplevel.pl index a43956b7..af94cffb 100644 --- a/src/prolog/toplevel.pl +++ b/src/prolog/toplevel.pl @@ -80,13 +80,17 @@ needs_bracketing(Value, Op) :- write_goal(G, VarList, MasterVarList, MaxDepth) :- ( G = (Var = Value) -> + ( var(Value) -> + select((Var = _), VarList, NewVarList) + ; VarList = NewVarList + ), write(Var), write(' = '), ( needs_bracketing(Value, (=)) -> write('('), - write_term(Value, [quoted(true), variable_names(VarList), max_depth(MaxDepth)]), + write_term(Value, [quoted(true), variable_names(NewVarList), max_depth(MaxDepth)]), write(')') - ; write_term(Value, [quoted(true), variable_names(VarList), max_depth(MaxDepth)]) + ; write_term(Value, [quoted(true), variable_names(NewVarList), max_depth(MaxDepth)]) ) ; G == [] -> write('true') @@ -95,24 +99,28 @@ write_goal(G, VarList, MasterVarList, MaxDepth) :- write_last_goal(G, VarList, MasterVarList, MaxDepth) :- ( G = (Var = Value) -> + ( var(Value) -> + select((Var = _), VarList, NewVarList) + ; VarList = NewVarList + ), write(Var), write(' = '), ( needs_bracketing(Value, (=)) -> - write('('), - write_term(Value, [quoted(true), variable_names(VarList), max_depth(MaxDepth)]), - write(')') - ; write_term(Value, [quoted(true), variable_names(VarList), max_depth(MaxDepth)]), - ( trailing_period_is_ambiguous(Value) -> - write(' ') - ; true - ) + write('('), + write_term(Value, [quoted(true), variable_names(NewVarList), max_depth(MaxDepth)]), + write(')') + ; write_term(Value, [quoted(true), variable_names(NewVarList), max_depth(MaxDepth)]), + ( trailing_period_is_ambiguous(Value) -> + write(' ') + ; true + ) ) ; G == [] -> write('true') ; write_term(G, [quoted(true), variable_names(MasterVarList), max_depth(MaxDepth)]) ). -write_eq((G1, G2), [_|VarList], MasterVarList, MaxDepth) :- +write_eq((G1, G2), VarList, MasterVarList, MaxDepth) :- !, write_goal(G1, VarList, MasterVarList, MaxDepth), write(', '), @@ -176,7 +184,7 @@ read_input(ThreadedGoals, NewVarList) :- read_input(ThreadedGoals, NewVarList) ; member(C, ['\n', .]) -> nl, write('; ...'), nl - ; read_input(ThreadedGoals, NewVarList) + ; read_input(ThreadedGoals, NewVarList) ). help_message :-