[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: "distinct" predicate
From: |
Emmanuel Coquery |
Subject: |
Re: "distinct" predicate |
Date: |
Thu, 31 Oct 2002 10:24:52 +0100 |
Le Jeudi 31 Octobre 2002 10:24, Abhinav-Bhardwaj a écrit :
> hi,
> is there any way by which i can specify a rule say
> distinct..which succeeds only when all the terms in a list
> are distinct.
> for eg:
> ?- distinct([a, b, c, d]).
> yes
> ?- distinct([a, b, a, d]).
> no
>
You can define it by
distinct(L) :- sort(L,L2), length(L,N), length(L2,N).
when sorting, sort/2 regroups duplicates. So if L and L2 don't have the same
length, it means that L was containing duplicates. This also works with
variables:
| ?- distinct([X,Y,X]).
no
| ?- distinct([X,Y]).
yes
regards
Emmanuel