[m-rev.] for post-commit review: add missing from_list/1 and from_sorted_list/1 synonyms
Julien Fischer
jfischer at opturion.com
Sun Mar 9 01:37:45 AEDT 2025
For post-commit review.
The documentation and NEW file are the only (mildly) interesting bit.
--------------------------------
Add missing from_list/1 and from_sorted_list/1 synonyms.
library/diet.m:
library/fat_sparse_bitset.m:
library/fatter_sparse_bitset.m:
library/set_ctree234.m:
library/set_tree234.m:
library/sparse_bitset.m:
library/tree_bitset.m:
Add the above functions where they are missing.
library/set.m:
library/set_bbbtree.m:
Adjust some documentation.
NEWS.md:
Announce the above additions.
Julien.
diff --git a/NEWS.md b/NEWS.md
index c77b589..55d5d8b 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -219,8 +219,9 @@ Changes to the Mercury standard library
### Changes to the `diet` module
-* The following predicate has been added:
+* The following function and predicate have been added:
+ - func `from_sorted_list/1`
- pred `nondet_member/2`
* The following obsolete predicate has been removed:
@@ -281,8 +282,10 @@ Changes to the Mercury standard library
- func `sorted_list_to_set/1`
- pred `sorted_list_to_set/2`
-* The following predicate has been added:
+* The following functions and predicate have been added:
+ - func `from_list/1`
+ - func `from_sorted_list/1`
- pred `nondet_member/1`
* The following obsolete predicate has been removed:
@@ -864,8 +867,9 @@ Changes to the Mercury standard library
### Changes to the `set_ctree234` module
-* The following predicate has been added:
+* The following function and predicate have been added:
+ - func `from_sorted_list/1`
- pred `nondet_member/2`
* The following predicate has been marked obsolete:
@@ -890,8 +894,9 @@ Changes to the Mercury standard library
### Changes to the `set_tree234` module
-* The following predicate has been added:
+* The following function and predicate have been added:
+ - func `from_osrted_list/1`
- pred `nondet_member/2`
* The following obsolete predicates have been removed:
@@ -922,8 +927,10 @@ Changes to the Mercury standard library
`uenum` typeclass, replacing the earlier requirement that it be
a member of the `enum` typeclass.
-* The following predicate has been added:
+* The following functions and predicate have been added:
+ - func `from_list/1`
+ - func `from_sorted_list/`
- pred `nondet_member/2`
* The following obsolete predicate has been removed:
@@ -1244,8 +1251,10 @@ Changes to the Mercury standard library
### Changes to the `tree_bitset` module
-* The following predicates have been added:
+* The following functions and predicates have been added:
+ - func `from_list/1`
+ - func `from_sorted_list/1`
- pred `nondet_member/2`
- pred `remove_leq/3`
- pred `remove_gt/3`
diff --git a/library/diet.m b/library/diet.m
index fd41483..584546f 100644
--- a/library/diet.m
+++ b/library/diet.m
@@ -280,6 +280,10 @@
:- pred sorted_list_to_set(list(T)::in, diet(T)::out) is det
<= diet_element(T).
+ % A synonym for sorted_list_to_set/1.
+ %
+:- func from_sorted_list(list(T)) = diet(T) <= diet_element(T).
+
%---------------------------------------------------------------------------%
%
% Converting sets to lists.
@@ -1540,11 +1544,14 @@ from_list(List, Set) :-
from_interval_list(List, Set) :-
list.foldl(insert_interval, List, init, Set).
-sorted_list_to_set(List) = Set :-
- sorted_list_to_set(List, Set).
+sorted_list_to_set(SortedList) = Set :-
+ sorted_list_to_set(SortedList, Set).
-sorted_list_to_set(List, Set) :-
- list_to_set(List, Set).
+sorted_list_to_set(SortedList, Set) :-
+ list_to_set(SortedList, Set).
+
+from_sorted_list(SortedList) = Set :-
+ sorted_list_to_set(SortedList, Set).
%---------------------------------------------------------------------------%
diff --git a/library/fat_sparse_bitset.m b/library/fat_sparse_bitset.m
index 88f52c2..dcd00bb 100644
--- a/library/fat_sparse_bitset.m
+++ b/library/fat_sparse_bitset.m
@@ -303,6 +303,10 @@
:- func list_to_set(list(T)) = fat_sparse_bitset(T) <= uenum(T).
:- pred list_to_set(list(T)::in, fat_sparse_bitset(T)::out) is det <= uenum(T).
+ % A synonym for list_to_set/1.
+ %
+:- func from_list(list(T)) = fat_sparse_bitset(T) <= uenum(T).
+
% sorted_list_to_set(List) returns a set containing only the members
% of List. List must be sorted *on the enum values of the items*.
% If the to_uint method of uenum(T) preserves order, then this is
@@ -315,6 +319,10 @@
:- pred sorted_list_to_set(list(T)::in, fat_sparse_bitset(T)::out)
is det <= uenum(T).
+ % A synonym for sorted_list_to_set/1.
+ %
+:- func from_sorted_list(list(T)) = fat_sparse_bitset(T) <= uenum(T).
+
%---------------------------------------------------------------------------%
%
% Converting sets to lists.
@@ -1495,6 +1503,11 @@ reverse_bitset_elems_acc(bitset_cons(XOffset,
XBits, Xs), Ys, Zs) :-
%---------------------%
+from_list(ItemList) = Set :-
+ list_to_set(ItemList, Set).
+
+%---------------------%
+
sorted_list_to_set(SortedList) = Set :-
sorted_list_to_set(SortedList, Set).
@@ -1545,6 +1558,11 @@ sorted_list_to_set_loop(Item1, [Item2 | Items],
Offset, Bits, Tail) :-
%---------------------%
+from_sorted_list(SortedList) = Set :-
+ sorted_list_to_set(SortedList, Set).
+
+%---------------------%
+
to_sorted_list(Set) = SortedList :-
to_sorted_list(Set, SortedList).
diff --git a/library/fatter_sparse_bitset.m b/library/fatter_sparse_bitset.m
index ea763da..71cb6b2 100644
--- a/library/fatter_sparse_bitset.m
+++ b/library/fatter_sparse_bitset.m
@@ -374,6 +374,10 @@
:- pred list_to_set(list(T)::in, fatter_sparse_bitset(T)::out) is det
<= uenum(T).
+ % A synonym for list_to_set/1.
+ %
+:- func from_list(list(T)) = fatter_sparse_bitset(T) <= uenum(T).
+
% sorted_list_to_set(List) returns a set containing only the members
% of List. List must be sorted. Takes O(length(List)) time and space.
%
@@ -381,6 +385,10 @@
:- pred sorted_list_to_set(list(T)::in, fatter_sparse_bitset(T)::out)
is det <= uenum(T).
+ % A synonym for sorted_list_to_set/1.
+ %
+:- func from_sorted_list(list(T)) = fatter_sparse_bitset(T) <= uenum(T).
+
%---------------------------------------------------------------------------%
%
% Converting sets to lists.
@@ -1629,6 +1637,11 @@ reverse_bitset_elems_acc(bitset_cons(XOffset,
XBitsLo, XBitsHi, Xs), Ys, Zs) :-
%---------------------%
+from_list(ItemList) = Set :-
+ list_to_set(ItemList, Set).
+
+%---------------------%
+
sorted_list_to_set(SortedList) = Set :-
sorted_list_to_set(SortedList, Set).
@@ -1683,6 +1696,11 @@ sorted_list_to_set_loop(Item1, [Item2 | Items],
Offset, BitsLo, BitsHi,
%---------------------%
+from_sorted_list(SortedList) = Set :-
+ sorted_list_to_set(SortedList, Set).
+
+%---------------------%
+
to_sorted_list(Set) = SortedList :-
to_sorted_list(Set, SortedList).
diff --git a/library/set.m b/library/set.m
index 652d83d..f5c063b 100644
--- a/library/set.m
+++ b/library/set.m
@@ -266,7 +266,7 @@
:- func list_to_set(list(T)) = set(T).
:- pred list_to_set(list(T)::in, set(T)::out) is det.
- % Synonym for list_to_set/1.
+ % A synonym for list_to_set/1.
%
:- func from_list(list(T)) = set(T).
diff --git a/library/set_bbbtree.m b/library/set_bbbtree.m
index f15d37a..13054e5 100644
--- a/library/set_bbbtree.m
+++ b/library/set_bbbtree.m
@@ -258,7 +258,7 @@
:- func list_to_set(list(T)) = set_bbbtree(T).
:- pred list_to_set(list(T)::in, set_bbbtree(T)::out) is det.
- % A synonym for set_bbtree.list_to_set/1.
+ % A synonym for list_to_set/1.
%
:- func from_list(list(T)) = set_bbbtree(T).
diff --git a/library/set_ctree234.m b/library/set_ctree234.m
index 24d9152..2bd4983 100644
--- a/library/set_ctree234.m
+++ b/library/set_ctree234.m
@@ -272,6 +272,9 @@
% `from_list' is a synonym for `list_to_set'.
%
:- func list_to_set(list(T)) = set_ctree234(T).
+
+ % A synonym for list_to_set/1.
+ %
:- func from_list(list(T)) = set_ctree234(T).
% sorted_list_to_set(List) = Set is true iff Set is the set
@@ -280,6 +283,10 @@
%
:- func sorted_list_to_set(list(T)) = set_ctree234(T).
+ % A synonym for sorted_list_to_set/1.
+ %
+:- func from_sorted_list(list(T)) = set_ctree234(T).
+
% rev_sorted_list_to_set(List) = Set is true iff Set is the set
% containing only the members of List. List must be sorted
% in descending order and must not contain any duplicates.
@@ -2693,6 +2700,11 @@ do_from_sorted_list(Len, !List, Level0,
AllThrees0, Tree) :-
%---------------------%
+from_sorted_list(SortedList) =
+ sorted_list_to_set(SortedList).
+
+%---------------------%
+
rev_sorted_list_to_set(List) = ct(Len, Tree) :-
list.length(List, Len),
( if Len = 0 then
diff --git a/library/set_tree234.m b/library/set_tree234.m
index c7c58fc..ebd3239 100644
--- a/library/set_tree234.m
+++ b/library/set_tree234.m
@@ -268,6 +268,10 @@
:- func sorted_list_to_set(list(T)) = set_tree234(T).
:- pred sorted_list_to_set(list(T)::in, set_tree234(T)::out) is det.
+ % A synonym for sorted_list_to_set/1.
+ %
+:- func from_sorted_list(list(T)) = set_tree234(T).
+
% rev_sorted_list_to_set(List) = Set is true iff Set is the set
% containing only the members of List. List must be sorted
% in descending order and must not contain duplicates.
@@ -2737,6 +2741,11 @@ do_from_sorted_list(Len, !List, Level0,
AllThrees0, Tree) :-
%---------------------%
+from_sorted_list(SortedList) = Set :-
+ sorted_list_to_set(SortedList, Set).
+
+%---------------------%
+
rev_sorted_list_to_set(List) = Tree :-
rev_sorted_list_to_set(List, Tree).
diff --git a/library/sparse_bitset.m b/library/sparse_bitset.m
index 978c585..c3f638b 100644
--- a/library/sparse_bitset.m
+++ b/library/sparse_bitset.m
@@ -313,6 +313,10 @@
:- func list_to_set(list(T)) = sparse_bitset(T) <= uenum(T).
:- pred list_to_set(list(T)::in, sparse_bitset(T)::out) is det <= uenum(T).
+ % A synonym for list_to_set/1.
+ %
+:- func from_list(list(T)) = sparse_bitset(T) <= uenum(T).
+
% sorted_list_to_set(List) returns a set containing only the members
% of List. List must be sorted *on the enum values of the items*.
% If the to_uint method of uenum(T) preserves order, then this is
@@ -325,6 +329,10 @@
:- pred sorted_list_to_set(list(T)::in, sparse_bitset(T)::out)
is det <= uenum(T).
+ % A synonym for sorted_list_to_set/1.
+ %
+:- func from_sorted_list(list(T)) = sparse_bitset(T) <= uenum(T).
+
%---------------------------------------------------------------------------%
%
% Converting sets to lists.
@@ -1502,6 +1510,11 @@ list_to_set_get_descending_run(Offset0, Bits0,
Items @ [HeadItem | TailItems],
%---------------------%
+from_list(List) = Set :-
+ list_to_set(List, Set).
+
+%---------------------%
+
sorted_list_to_set(SortedList) = Set :-
sorted_list_to_set(SortedList, Set).
@@ -1552,6 +1565,11 @@ sorted_list_to_set_loop(Item1, [Item2 | Items],
Offset, Bits, Tail) :-
%---------------------%
+from_sorted_list(SortedList) = Set :-
+ sorted_list_to_set(SortedList, Set).
+
+%---------------------%
+
to_sorted_list(Set) = SortedList :-
to_sorted_list(Set, SortedList).
diff --git a/library/tree_bitset.m b/library/tree_bitset.m
index ff2c406..8a7e2dc 100644
--- a/library/tree_bitset.m
+++ b/library/tree_bitset.m
@@ -288,6 +288,10 @@
:- func list_to_set(list(T)) = tree_bitset(T) <= uenum(T).
:- pred list_to_set(list(T)::in, tree_bitset(T)::out) is det <= uenum(T).
+ % A synonym for list_to_set/1.
+ %
+:- func from_list(list(T)) = tree_bitset(T) <= uenum(T).
+
% sorted_list_to_set(List) returns a set containing only the members
% of List. List must be sorted *on the enum values of the items*.
% If the to_uint method of uenum(T) preserves order, then this is
@@ -300,6 +304,10 @@
:- pred sorted_list_to_set(list(T)::in, tree_bitset(T)::out) is det
<= uenum(T).
+ % A synonym for sorted_list_to_set/1.
+ %
+:- func from_sorted_list(list(T)) = tree_bitset(T) <= uenum(T).
+
%---------------------------------------------------------------------------%
%
% Converting sets to lists.
@@ -3511,6 +3519,9 @@ list_to_set(List) = sorted_list_to_set(list.sort(List)).
list_to_set(List, Set) :-
Set = list_to_set(List).
+from_list(List) = Set :-
+ Set = list_to_set(List).
+
%---------------------%
sorted_list_to_set(Elems) = Set :-
@@ -3541,6 +3552,9 @@ sorted_list_to_set(Elems) = Set :-
sorted_list_to_set(List, Set) :-
Set = sorted_list_to_set(List).
+from_sorted_list(List) = Set :-
+ Set = sorted_list_to_set(List).
+
:- pred items_to_index(list(T)::in, list(uint)::out) is det <= uenum(T).
:- pragma type_spec(pred(items_to_index/2), T = var(_)).
:- pragma type_spec(pred(items_to_index/2), T = int).
More information about the reviews
mailing list