From 07f358c91b6096ce0384702d92114ae9b93cc4ba Mon Sep 17 00:00:00 2001 From: =?utf8?q?Adri=C3=A1n=20Arroyo=20Calle?= Date: Thu, 22 Dec 2022 23:23:07 +0100 Subject: [PATCH] Compatible Doclog docs for library(dif) --- src/lib/dif.pl | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/lib/dif.pl b/src/lib/dif.pl index d9c475eb..165493fd 100644 --- a/src/lib/dif.pl +++ b/src/lib/dif.pl @@ -1,3 +1,8 @@ +/** +Provides predicate dif/2. dif/2 is a constraint that is true only if both of its +arguments are different terms. +*/ + :- module(dif, [dif/2]). :- use_module(library(atts)). @@ -38,6 +43,20 @@ verify_attributes(Var, Value, Goals) :- % Probably the world's worst dif/2 implementation. I'm open to % suggestions for improvement. +%% dif(?X, ?Y). +% +% True iff X and Y are different terms. Unlike \\=/2, dif/2 is more declarative because if X and Y can +% unify but they're not yet equal, the decision is delayed, and prevents X and Y to become equal later. +% Examples: +% +% ?- dif(a, a). +% false. +% ?- dif(a, b). +% true. +% ?- dif(X, b). +% dif:dif(X,b). +% ?- dif(X, b), X = b. +% false. dif(X, Y) :- X \== Y, ( X \= Y -> true -- 2.54.0