[m-rev.] for review: set_ctree234.member

Peter Wang novalazy at gmail.com
Fri Nov 5 11:56:22 AEDT 2010


The argument order one_member(Set, Elem) is more useful for solutions;
perhaps it is time to add it to other set modules?

Also, is this too much of a feature to go on 10.04?

---

Branches: main

NEWS:
library/set_ctree234.m:
        Add set_ctree234.member/2.

        Fix argument order in documentation for set_ctree234.one_member/2.

diff --git a/NEWS b/NEWS
index 57c5779..a02aa12 100644
--- a/NEWS
+++ b/NEWS
@@ -32,6 +32,8 @@ Changes to the Mercury standard library:
 * We have added the predicates divide/4 and divide_by_set/4 to the tree_bitset
   module of the standard library.
 
+* We have added the predicate set_tree234.member/2.
+
 Changes to the Mercury compiler:
 
 * Support for building and linking against frameworks on Mac OS X has
diff --git a/library/set_ctree234.m b/library/set_ctree234.m
index 4d94726..baf8de9 100644
--- a/library/set_ctree234.m
+++ b/library/set_ctree234.m
@@ -50,7 +50,13 @@
     %
 :- pred set_ctree234.empty(set_ctree234(_T)::in) is semidet.
 
-    % `set_ctree234.one_member(X, Set)' is true iff `X' is a member of `Set'.
+    % `set_ctree234.member(X, Set)' is true iff `X' is a member of `Set'.
+    %
+:- pred set_ctree234.member(T, set_ctree234(T)).
+:- mode set_ctree234.member(in, in) is semidet.
+:- mode set_ctree234.member(out, in) is nondet.
+
+    % `set_ctree234.one_member(Set, X)' is true iff `X' is a member of `Set'.
     %
 :- pred set_ctree234.one_member(set_ctree234(T)::in, T::out) is nondet.
 
@@ -312,6 +318,13 @@ set_ctree234.make_singleton_set(X) = ct(1, two(X, empty, empty)).
 
 set_ctree234.empty(ct(0, _)).
 
+:- pragma promise_equivalent_clauses(set_ctree234.member/2).
+
+set_ctree234.member(E::in, Set::in) :-
+    set_ctree234.contains(Set, E).
+set_ctree234.member(E::out, Set::in) :-
+    set_ctree234.one_member(Set, E).
+
 set_ctree234.one_member(ct(_, Tin), E) :-
     set_ctree234.do_one_member(Tin, E).
 

--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to:       mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions:          mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------



More information about the reviews mailing list