]> Repositorios git - scryer-prolog.git/commitdiff
add prefixes to gensym keys
authorMark Thom <[email protected]>
Tue, 14 Jan 2020 04:01:09 +0000 (21:01 -0700)
committerMark Thom <[email protected]>
Tue, 14 Jan 2020 04:01:09 +0000 (21:01 -0700)
src/prolog/lib/gensym.pl

index 7b0f6cb53630fefbd321285aa9147bafdd822f58..98d8bcde4a9a7ac555f04ee5f11bd1e1e209474c 100644 (file)
@@ -1,4 +1,3 @@
-
 :- module(gensym, [gensym/2,
                   reset_gensym/1]).
 
@@ -7,6 +6,12 @@
 :- use_module(library(non_iso)).
 :- use_module(library(si)).
 
+gensym_key(Base, BaseKey) :-
+    atom_chars('gensym_', PrefixChars),
+    atom_chars(Base, BaseChars),
+    append(PrefixChars, BaseChars, BaseKeyChars),
+    atom_chars(BaseKey, BaseKeyChars).
+
 append_id(Base, UniqueID, Unique) :-
     atom_chars(Base, BaseChars),
     number_chars(UniqueID, IDChars),
@@ -15,12 +20,13 @@ append_id(Base, UniqueID, Unique) :-
 
 gensym(Base, Unique) :-
     must_be(var, Unique),
-    atom_si(Base),    
-    (  bb_get(Base, UniqueID0) ->
+    atom_si(Base),
+    gensym_key(Base, BaseKey),
+    (  bb_get(BaseKey, UniqueID0) ->
        UniqueID is UniqueID0 + 1,
-       bb_put(Base, UniqueID),
+       bb_put(BaseKey, UniqueID),
        append_id(Base, UniqueID, Unique)
-    ;  bb_put(Base, 1),
+    ;  bb_put(BaseKey, 1),
        append_id(Base, 1, Unique)
     ).