diff --git a/os/writeterm.c b/os/writeterm.c index a39a7d512..78698a94f 100644 --- a/os/writeterm.c +++ b/os/writeterm.c @@ -748,6 +748,13 @@ p_float_format( USES_REGS1 ) return TRUE; } +static Int +p_dollar_var( USE_REGS1 ) +{ + Term tv = Yap_MkApplTerm(LOCAL_FunctorVar, 1, &ARG1); + return Yap_unify(tv, ARG2); +} + void Yap_InitWriteTPreds(void) @@ -765,6 +772,8 @@ Yap_InitWriteTPreds(void) Yap_InitCPred ("print", 1, print1, SyncPredFlag); Yap_InitCPred ("print", 2, print, SyncPredFlag); Yap_InitCPred ("write_depth", 3, p_write_depth, SafePredFlag|SyncPredFlag); + ; + Yap_InitCPred ("$VAR", 2, p_dollar_var, SafePredFlag); ; Yap_InitCPred ("$float_format", 1, p_float_format, SafePredFlag|SyncPredFlag); } diff --git a/pl/boot.yap b/pl/boot.yap index cd610c1c6..3d23ef094 100644 --- a/pl/boot.yap +++ b/pl/boot.yap @@ -1083,10 +1083,11 @@ number of steps. '$name_well_known_vars'(NVL0). '$name_vars_in_goals1'([], I, I). -'$name_vars_in_goals1'(['$VAR'(Name)|NGVL], I0, IF) :- +'$name_vars_in_goals1'([SName|NGVL], I0, IF) :- I is I0+1, '$gen_name_string'(I0,[],SName), !, atom_codes(Name, [95|SName]), + '$VAR'(Name, SName ), '$name_vars_in_goals1'(NGVL, I, IF). '$name_vars_in_goals1'([NV|NGVL], I0, IF) :- nonvar(NV),