True if Goal is true and no previous solution of Goal
bound
Witness to the same value. As previous answers need to be
copied, equivalence testing is based on term variance (=@=/2).
The variant distinct/1
is equivalent to distinct(Goal,Goal)
.
If the answers are ground terms, the predicate behaves as the code
below, but answers are returned as soon as they become available rather
than first computing the complete answer set.
distinct(Goal) :-
findall(Goal, Goal, List),
list_to_set(List, Set),
member(Goal, Set).