From: Markus Triska Date: Sat, 22 Aug 2020 15:47:42 +0000 (+0200) Subject: dif/2: Succeed unconditionally if the arguments are not unifiable. X-Git-Tag: v0.9.0~174^2~8^2~1 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=e75ebd9b6e947fdc2bca6dacad88012290a28f19;p=scryer-prolog.git dif/2: Succeed unconditionally if the arguments are not unifiable. This addresses one part of #135. --- diff --git a/src/lib/dif.pl b/src/lib/dif.pl index 347e9d13..ad3053ec 100644 --- a/src/lib/dif.pl +++ b/src/lib/dif.pl @@ -38,11 +38,14 @@ verify_attributes(Var, Value, Goals) :- % Probably the world's worst dif/2 implementation. I'm open to % suggestions for improvement. -dif(X, Y) :- X \== Y, - ( term_variables(X, XVars), term_variables(Y, YVars), - dif_set_variables(XVars, X, Y), - dif_set_variables(YVars, X, Y) - ). +dif(X, Y) :- + X \== Y, + ( X \= Y -> true + ; ( term_variables(X, XVars), term_variables(Y, YVars), + dif_set_variables(XVars, X, Y), + dif_set_variables(YVars, X, Y) + ) + ). gather_dif_goals([]) --> []. gather_dif_goals([(X \== Y) | Goals]) -->