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).