emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/sweeprolog fa8c35798b 3/5: ; Fix fresh variable naming in


From: ELPA Syncer
Subject: [nongnu] elpa/sweeprolog fa8c35798b 3/5: ; Fix fresh variable naming in term replacement
Date: Tue, 14 Nov 2023 07:00:25 -0500 (EST)

branch: elpa/sweeprolog
commit fa8c35798bef61daa3b7f1c2fd8759a7c241c20c
Author: Eshel Yaron <me@eshelyaron.com>
Commit: Eshel Yaron <me@eshelyaron.com>

    ; Fix fresh variable naming in term replacement
---
 sweep.pl | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/sweep.pl b/sweep.pl
index 3109b99e24..b13dbbdb50 100644
--- a/sweep.pl
+++ b/sweep.pl
@@ -1596,20 +1596,22 @@ sweep_replace_stream(Stream, FileName, Module, 
BodyIndent, Final, TemplateGoal,
     !,
     sweep_anon_var_names(Rep, VarNames0, AnonVars0),
     sweep_anon_var_names(Term, VarNames1, AnonVars1),
-    maplist({VarNames1}/[Name0=Var,Name=Var]>>(   member(Name0=_, VarNames1)
-                                              ->  atom_concat(Name0, 'Fresh', 
Name)
-                                              ;   Name = Name0
-                                              ),
-            VarNames0, VarNames2),
+    maplist(var_name_disambiguate(VarNames1), VarNames0, VarNames2),
     append(AnonVars1, AnonVars0, AnonVars),
     append(VarNames2, AnonVars, VarNames3),
     append(VarNames1, VarNames3, VarNames),
-    sweep_replace_stream_(Term, Pos, Stream, FileName, Module, BodyIndent, 
Final, TemplateGoal, Rep-VarNames, Res).
+    sweep_replace_stream_(Term, Pos, Stream, FileName, Module, BodyIndent, 
Final, TemplateGoal, VarNames0, Rep-VarNames, Res).
 sweep_replace_stream(Stream, FileName, Module, BodyIndent, Final, 
TemplateGoal, RepVarNames, Res) :-
     sweep_replace_stream(Stream, FileName, Module, BodyIndent, Final, 
TemplateGoal, RepVarNames, Res).
 
-sweep_replace_stream_(end_of_file, _, _, _, _, _, _, _, _, []) :- !.
-sweep_replace_stream_(Term, Pos, Stream, FileName, Module, BodyIndent, Final, 
TemplateGoal, RepVarNames, Res) :-
+var_name_disambiguate(VarNames1, Name0=Var, Name=Var) :-
+    (   member(Name0=_, VarNames1)
+    ->  atom_concat(Name0, 'Fresh', Name)
+    ;   Name = Name0
+    ).
+
+sweep_replace_stream_(end_of_file, _, _, _, _, _, _, _, _, _, []) :- !.
+sweep_replace_stream_(Term, Pos, Stream, FileName, Module, BodyIndent, Final, 
TemplateGoal, VarNames0, Rep-VarNames, Res) :-
     (   var(Term)
     ->  State = clause
     ;   memberchk(Term, [(_:-_),(_=>_),(_-->_)])
@@ -1619,10 +1621,10 @@ sweep_replace_stream_(Term, Pos, Stream, FileName, 
Module, BodyIndent, Final, Te
     ;   State = head
     ),
     findall(Result,
-            sweep_replace_term(Pos, Term, FileName, Module, BodyIndent, 0, 
1200, State, Final, TemplateGoal, RepVarNames,Result),
+            sweep_replace_term(Pos, Term, FileName, Module, BodyIndent, 0, 
1200, State, Final, TemplateGoal, Rep-VarNames,Result),
             Res,
             Tail),
-    sweep_replace_stream(Stream, FileName, Module, BodyIndent, Final, 
TemplateGoal, RepVarNames, Tail).
+    sweep_replace_stream(Stream, FileName, Module, BodyIndent, Final, 
TemplateGoal, Rep-VarNames0, Tail).
 
 
 %!  sweep_replace_term(Pos, Term, FileName, Module, BodyIndent, CurrentIndent, 
Precedence, State, Final, TemplateGoal, RepVarNames, Result) is nondet.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]