[mercury-users] Starting to understand some/all

Douglas Auclair dauclair at msn.com
Sun Mar 2 08:26:24 AEDT 2003

Dear all,

Now I finally understand why Mercury doesn't have the list predicates of 
any/2 and every/2!  I ran across a compilation error, however, and I need 
some help.  The compiler complained that for:

some [X] (member(X, List) => p(X))

X was free and should have been bound under the negation.  I don't 
understand the error (what negation?).  My intention is to see of any 
element of List passes p (which I think I'm doing by binding X for each of 
the elements of List and passing that value to p).  When I changed the term 

not (all [x] (member(X, List) => not p(X)))

it compiled and ran fine.

Am I using some incorrectly?  I don't wish to use a negated predicate under 
a negated universal quantification test, what are the ways I can use to 
avoid this double negation?

Doug Auclair

Note:  p's signature is pred p(X::in) is semidet.

Protect your PC - get McAfee.com VirusScan Online  

mercury-users mailing list
post:  mercury-users at cs.mu.oz.au
administrative address: owner-mercury-users at cs.mu.oz.au
unsubscribe: Address: mercury-users-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-users-request at cs.mu.oz.au Message: subscribe

More information about the users mailing list