From: Adrián Arroyo Calle Date: Thu, 22 Dec 2022 22:23:07 +0000 (+0100) Subject: Compatible Doclog docs for library(dif) X-Git-Tag: v0.9.2~236^2 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=07f358c91b6096ce0384702d92114ae9b93cc4ba;p=scryer-prolog.git Compatible Doclog docs for library(dif) --- 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