]> Repositorios git - scryer-prolog.git/commitdiff
select variable names in write_eq based on whether RHS is a variable (#326)
authorMark Thom <[email protected]>
Wed, 29 Apr 2020 13:56:17 +0000 (10:56 -0300)
committerMark Thom <[email protected]>
Wed, 29 Apr 2020 13:56:17 +0000 (10:56 -0300)
src/prolog/toplevel.pl

index a43956b79e8e9ba17c24f40feca8280381f4fa6d..af94cffb2d0a1cefd1c0c67735525f9137ea215b 100644 (file)
@@ -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 :-