From e75ebd9b6e947fdc2bca6dacad88012290a28f19 Mon Sep 17 00:00:00 2001 From: Markus Triska Date: Sat, 22 Aug 2020 17:47:42 +0200 Subject: [PATCH] dif/2: Succeed unconditionally if the arguments are not unifiable. This addresses one part of #135. --- src/lib/dif.pl | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) 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]) --> -- 2.54.0