From: Mark Thom Date: Wed, 13 Mar 2019 04:57:02 +0000 (-0600) Subject: clean up bb_put/2 a bit X-Git-Tag: v0.8.110~181 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=d81268a1815adc34a4acb7f6ef53691ecbba2caf;p=scryer-prolog.git clean up bb_put/2 a bit --- diff --git a/src/prolog/lib/builtins.pl b/src/prolog/lib/builtins.pl index 848787b2..1de2db6a 100644 --- a/src/prolog/lib/builtins.pl +++ b/src/prolog/lib/builtins.pl @@ -738,17 +738,15 @@ current_predicate(Pred) :- ; throw(error(type_error(predicate_indicator, Pred), current_predicate/1)) ). -bb_put(Key, Value) :- bb_put(Key, _, Value). - -store_global_var(Key, Value) :- '$store_global_var'(Key, Value). - -reset_global_var_at_key(Key) :- '$reset_global_var_at_key'(Key). - -bb_put(Key, OldValue, NewValue) :- +bb_put(Key, NewValue) :- ( bb_get(Key, OldValue) -> call_cleanup((store_global_var(Key, NewValue) ; false), store_global_var(Key, OldValue)) ; call_cleanup((store_global_var(Key, NewValue) ; false), reset_global_var_at_key(Key)) ). +store_global_var(Key, Value) :- '$store_global_var'(Key, Value). + +reset_global_var_at_key(Key) :- '$reset_global_var_at_key'(Key). + bb_get(Key, Value) :- atom(Key), !, '$fetch_global_var'(Key, Value). bb_get(Key, _) :- throw(error(type_error(atom, Key), bb_get/2)).