From: Mark Thom Date: Tue, 14 Jan 2020 04:01:09 +0000 (-0700) Subject: add prefixes to gensym keys X-Git-Tag: v0.8.118~25 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=9958ad6f3478fb0d13c53181d6badc3ae606bee4;p=scryer-prolog.git add prefixes to gensym keys --- diff --git a/src/prolog/lib/gensym.pl b/src/prolog/lib/gensym.pl index 7b0f6cb5..98d8bcde 100644 --- a/src/prolog/lib/gensym.pl +++ b/src/prolog/lib/gensym.pl @@ -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) ).