<div dir="ltr"><div>Delete obsolete procedures and modules from the standard library.</div><div><br></div><div>library/array.m:</div><div>library/array2d.m:</div><div>library/bitmap.m:</div><div>library/store.m:</div><div>
library/thread.semaphore.m:</div><div>library/version_array2d.m:</div><div>library/version_bitmap.m:</div><div>library/version_hash_table.m:</div><div>library/version_store.m:</div><div><span class="" style="white-space:pre"> </span>Delete predicates that were deprecated in Mercury 13.05 and before.</div>
<div><br></div><div>library/version_array.m</div><div><span class="" style="white-space:pre">     </span>Delete the deprecated function new/2.</div><div><br></div><div><span class="" style="white-space:pre">     </span>Deprecate unsafe_new/2<span class="" style="white-space:pre">    </span>and unsafe_init/2 to replace it.</div>
<div><span class="" style="white-space:pre">    </span>(We had overlooked this previously.)</div><div><br></div><div>library/string.m:</div><div><span class="" style="white-space:pre">      </span>Delete the deprecated function set_char_char/3.</div>
<div><span class="" style="white-space:pre">    </span>(We will leave the other deprecated procedures in this module</div><div><span class="" style="white-space:pre">      </span>for at least another release.)</div><div><br></div>
<div>library/svlist.m:</div><div>library/svpqueue.m:</div><div>library/svstack.m:</div><div><span class="" style="white-space:pre"> </span>Delete these modules: they were only ever needed as a transitional</div><div><span class="" style="white-space:pre"> </span>mechanism.</div>
<div><br></div><div>library/library.m:</div><div><span class="" style="white-space:pre">  </span>Conform to the above changes.</div><div><br></div><div>doc/Mmakefile:</div><div><span class="" style="white-space:pre">        </span>Unrelated change: delete references to files that have been</div>
<div><span class="" style="white-space:pre">    </span>deleted since we moved to git.</div><div><br></div><div>tests/hard_coded/*/*.m</div><div>tests/tabling/*.m:</div><div><span class="" style="white-space:pre">      </span>Update test cases where they made use of predicates that have</div>
<div><span class="" style="white-space:pre">    </span>now been deleted from the standard library.</div><div><br></div><div>Julien.</div><div><br></div><div>diff --git a/doc/Mmakefile b/doc/Mmakefile</div><div>index 1c957e0..4700857 100644</div>
<div>--- a/doc/Mmakefile</div><div>+++ b/doc/Mmakefile</div><div>@@ -246,18 +246,10 @@ library-menu.texi_pp: ../VERSION $(LIBRARY_DIR)/*.m</div><div> <span class="" style="white-space:pre">               </span>case $$filename in<span class="" style="white-space:pre">                                        </span>\</div>
<div> <span class="" style="white-space:pre">                   </span>$(LIBRARY_DIR)/backjump.m)<span class="" style="white-space:pre">                        </span>\</div><div> <span class="" style="white-space:pre">                         </span>;;<span class="" style="white-space:pre">                                        </span>\</div>
<div>-<span class="" style="white-space:pre">                   </span>$(LIBRARY_DIR)/bintree.m)<span class="" style="white-space:pre">                 </span>\</div><div>-<span class="" style="white-space:pre">                         </span>;;<span class="" style="white-space:pre">                                        </span>\</div>
<div>-<span class="" style="white-space:pre">                   </span>$(LIBRARY_DIR)/bintree_set.m)<span class="" style="white-space:pre">                     </span>\</div><div>-<span class="" style="white-space:pre">                         </span>;;<span class="" style="white-space:pre">                                        </span>\</div>
<div> <span class="" style="white-space:pre">                   </span>$(LIBRARY_DIR)/erlang_conf.m)                   \</div><div> <span class="" style="white-space:pre">                         </span>;;<span class="" style="white-space:pre">                                        </span>\</div>
<div> <span class="" style="white-space:pre">                   </span>$(LIBRARY_DIR)/erlang_rtti_implementation.m)<span class="" style="white-space:pre">      </span>\</div><div> <span class="" style="white-space:pre">                         </span>;;<span class="" style="white-space:pre">                                        </span>\</div>
<div>-<span class="" style="white-space:pre">                   </span>$(LIBRARY_DIR)/graph.m)<span class="" style="white-space:pre">                           </span>\</div><div>-<span class="" style="white-space:pre">                         </span>;;<span class="" style="white-space:pre">                                        </span>\</div>
<div>-<span class="" style="white-space:pre">                   </span>$(LIBRARY_DIR)/group.m)<span class="" style="white-space:pre">                           </span>\</div><div>-<span class="" style="white-space:pre">                         </span>;;<span class="" style="white-space:pre">                                        </span>\</div>
<div> <span class="" style="white-space:pre">                   </span>$(LIBRARY_DIR)/mer_std.m)<span class="" style="white-space:pre">                 </span>\</div><div> <span class="" style="white-space:pre">                         </span>;;<span class="" style="white-space:pre">                                        </span>\</div>
<div> <span class="" style="white-space:pre">                   </span>$(LIBRARY_DIR)/mutvar.m)<span class="" style="white-space:pre">                  </span>\</div><div>@@ -278,8 +270,6 @@ library-menu.texi_pp: ../VERSION $(LIBRARY_DIR)/*.m</div><div>
 <span class="" style="white-space:pre">                              </span>;;<span class="" style="white-space:pre">                                        </span>\</div><div> <span class="" style="white-space:pre">                 </span>$(LIBRARY_DIR)/stm_builtin.m)<span class="" style="white-space:pre">                     </span>\</div>
<div> <span class="" style="white-space:pre">                           </span>;;<span class="" style="white-space:pre">                                        </span>\</div><div>-<span class="" style="white-space:pre">                 </span>$(LIBRARY_DIR)/svrelation.m)<span class="" style="white-space:pre">                      </span>\</div>
<div>-<span class="" style="white-space:pre">                           </span>;;<span class="" style="white-space:pre">                                        </span>\</div><div> <span class="" style="white-space:pre">                 </span>$(LIBRARY_DIR)/table_builtin.m)<span class="" style="white-space:pre">                   </span>\</div>
<div> <span class="" style="white-space:pre">                           </span>;;<span class="" style="white-space:pre">                                        </span>\</div><div> <span class="" style="white-space:pre">                 </span>$(LIBRARY_DIR)/term_size_prof_builtin.m)<span class="" style="white-space:pre">  </span>\</div>
<div>@@ -298,18 +288,10 @@ library-chapters.texi_pp: ../VERSION $(LIBRARY_DIR)/[a-z]*.m</div><div> <span class="" style="white-space:pre">          </span>case $$filename in<span class="" style="white-space:pre">                                        </span>\</div>
<div> <span class="" style="white-space:pre">                   </span>$(LIBRARY_DIR)/backjump.m)<span class="" style="white-space:pre">                        </span>\</div><div> <span class="" style="white-space:pre">                         </span>;;<span class="" style="white-space:pre">                                        </span>\</div>
<div>-<span class="" style="white-space:pre">                   </span>$(LIBRARY_DIR)/bintree.m)<span class="" style="white-space:pre">                 </span>\</div><div>-<span class="" style="white-space:pre">                         </span>;;<span class="" style="white-space:pre">                                        </span>\</div>
<div>-<span class="" style="white-space:pre">                   </span>$(LIBRARY_DIR)/bintree_set.m)<span class="" style="white-space:pre">                     </span>\</div><div>-<span class="" style="white-space:pre">                         </span>;;<span class="" style="white-space:pre">                                        </span>\</div>
<div> <span class="" style="white-space:pre">                   </span>$(LIBRARY_DIR)/erlang_conf.m)                   \</div><div> <span class="" style="white-space:pre">                         </span>;;<span class="" style="white-space:pre">                                        </span>\</div>
<div> <span class="" style="white-space:pre">                   </span>$(LIBRARY_DIR)/erlang_rtti_implementation.m)<span class="" style="white-space:pre">      </span>\</div><div> <span class="" style="white-space:pre">                         </span>;;<span class="" style="white-space:pre">                                        </span>\</div>
<div>-<span class="" style="white-space:pre">                   </span>$(LIBRARY_DIR)/graph.m)<span class="" style="white-space:pre">                           </span>\</div><div>-<span class="" style="white-space:pre">                         </span>;;<span class="" style="white-space:pre">                                        </span>\</div>
<div>-<span class="" style="white-space:pre">                   </span>$(LIBRARY_DIR)/group.m)<span class="" style="white-space:pre">                           </span>\</div><div>-<span class="" style="white-space:pre">                         </span>;;<span class="" style="white-space:pre">                                        </span>\</div>
<div> <span class="" style="white-space:pre">                   </span>$(LIBRARY_DIR)/mer_std.m)<span class="" style="white-space:pre">                 </span>\</div><div> <span class="" style="white-space:pre">                         </span>;;<span class="" style="white-space:pre">                                        </span>\</div>
<div> <span class="" style="white-space:pre">                   </span>$(LIBRARY_DIR)/mutvar.m)<span class="" style="white-space:pre">                  </span>\</div><div>@@ -330,8 +312,6 @@ library-chapters.texi_pp: ../VERSION $(LIBRARY_DIR)/[a-z]*.m</div>
<div> <span class="" style="white-space:pre">                           </span>;;<span class="" style="white-space:pre">                                        </span>\</div><div> <span class="" style="white-space:pre">                 </span>$(LIBRARY_DIR)/stm_builtin.m)<span class="" style="white-space:pre">                     </span>\</div>
<div> <span class="" style="white-space:pre">                           </span>;;<span class="" style="white-space:pre">                                        </span>\</div><div>-<span class="" style="white-space:pre">                 </span>$(LIBRARY_DIR)/svrelation.m)<span class="" style="white-space:pre">                      </span>\</div>
<div>-<span class="" style="white-space:pre">                           </span>;;<span class="" style="white-space:pre">                                        </span>\</div><div> <span class="" style="white-space:pre">                 </span>$(LIBRARY_DIR)/table_builtin.m)<span class="" style="white-space:pre">                   </span>\</div>
<div> <span class="" style="white-space:pre">                           </span>;;<span class="" style="white-space:pre">                                        </span>\</div><div> <span class="" style="white-space:pre">                 </span>$(LIBRARY_DIR)/term_size_prof_builtin.m)<span class="" style="white-space:pre">  </span>\</div>
<div>diff --git a/library/array.m b/library/array.m</div><div>index f041f27..b65f79c 100644</div><div>--- a/library/array.m</div><div>+++ b/library/array.m</div><div>@@ -226,12 +226,6 @@</div><div> :- func array.set(array(T), int, T) = array(T).</div>
<div> :- mode array.set(array_di, in, in) = array_uo is det.</div><div> </div><div>-    % An obsolete synonym for array.set/4.</div><div>-    %</div><div>-:- pragma obsolete(array.svset/4).</div><div>-:- pred array.svset(int, T, array(T), array(T)).</div>
<div>-:- mode array.svset(in, in, array_di, array_uo) is det.</div><div>-</div><div>     % array.semidet_set sets the nth element of an array, and returns</div><div>     % the resulting array. It fails if the index is out of bounds.</div>
<div>     %</div><div>@@ -244,12 +238,6 @@</div><div> :- pred array.unsafe_set(int, T, array(T), array(T)).</div><div> :- mode array.unsafe_set(in, in, array_di, array_uo) is det.</div><div> </div><div>-    % An obsolete synonym for array.unsafe_set/4.</div>
<div>-    %</div><div>-:- pragma obsolete(array.unsafe_svset/4).</div><div>-:- pred array.unsafe_svset(int, T, array(T), array(T)).</div><div>-:- mode array.unsafe_svset(in, in, array_di, array_uo) is det.</div><div>-</div>
<div>     % array.slow_set sets the nth element of an array, and returns the</div><div>     % resulting array. The initial array is not required to be unique,</div><div>     % so the implementation may not be able to use destructive update.</div>
<div>@@ -1581,13 +1569,6 @@ array.set(Index, Item, !Array) :-</div><div>         array.unsafe_set(Index, Item, !Array)</div><div>     ).</div><div> </div><div>-array.svset(Index, Item, !Array) :-</div><div>-    ( bounds_checks, \+ array.in_bounds(!.Array, Index) -></div>
<div>-        out_of_bounds_error(!.Array, Index, "array.set")</div><div>-    ;</div><div>-        array.unsafe_svset(Index, Item, !Array)</div><div>-    ).</div><div>-</div><div> 'unsafe_elem :='(Index, !.Array, Value) = !:Array :-</div>
<div>     array.unsafe_set(Index, Value, !Array).</div><div> </div><div>@@ -1605,20 +1586,6 @@ array.svset(Index, Item, !Array) :-</div><div>     Array = Array0;</div><div> ").</div><div> </div><div>-:- pragma foreign_proc("C",</div>
<div>-    array.unsafe_svset(Index::in, Item::in, Array0::array_di, Array::array_uo),</div><div>-    [will_not_call_mercury, promise_pure, thread_safe, will_not_modify_trail,</div><div>-        does_not_affect_liveness,</div>
<div>-        sharing(yes(int, T, array(T), array(T)), [</div><div>-            cel(Array0, []) - cel(Array, []),</div><div>-            cel(Item, [])   - cel(Array, [T])</div><div>-        ])</div><div>-    ],</div><div>
-"</div><div>-    Array0->elements[Index] = Item; /* destructive update! */</div><div>-    Array = Array0;</div><div>-").</div><div>-</div><div> :- pragma foreign_proc("C#",</div><div>     array.unsafe_set(Index::in, Item::in, Array0::array_di, Array::array_uo),</div>
<div>     [will_not_call_mercury, promise_pure, thread_safe],</div><div>@@ -1627,14 +1594,6 @@ array.svset(Index, Item, !Array) :-</div><div>     Array = Array0;</div><div> }").</div><div> </div><div>-:- pragma foreign_proc("C#",</div>
<div>-    array.unsafe_svset(Index::in, Item::in, Array0::array_di, Array::array_uo),</div><div>-    [will_not_call_mercury, promise_pure, thread_safe],</div><div>-"{</div><div>-    Array0.SetValue(Item, Index);   /* destructive update! */</div>
<div>-    Array = Array0;</div><div>-}").</div><div>-</div><div> :- pragma foreign_proc("Erlang",</div><div>     array.unsafe_set(Index::in, Item::in, Array0::array_di, Array::array_uo),</div><div>     [will_not_call_mercury, promise_pure, thread_safe],</div>
<div>@@ -1642,13 +1601,6 @@ array.svset(Index, Item, !Array) :-</div><div>     Array = setelement(Index + 1, Array0, Item)</div><div> ").</div><div> </div><div>-:- pragma foreign_proc("Erlang",</div><div>-    array.unsafe_svset(Index::in, Item::in, Array0::array_di, Array::array_uo),</div>
<div>-    [will_not_call_mercury, promise_pure, thread_safe],</div><div>-"</div><div>-    Array = setelement(Index + 1, Array0, Item)</div><div>-").</div><div>-</div><div> :- pragma foreign_proc("Java",</div>
<div>     array.unsafe_set(Index::in, Item::in, Array0::array_di, Array::array_uo),</div><div>     [will_not_call_mercury, promise_pure, thread_safe],</div><div>@@ -1667,24 +1619,6 @@ array.svset(Index, Item, !Array) :-</div>
<div>     Array = Array0;         /* destructive update! */</div><div> ").</div><div> </div><div>-:- pragma foreign_proc("Java",</div><div>-    array.unsafe_svset(Index::in, Item::in, Array0::array_di, Array::array_uo),</div>
<div>-    [will_not_call_mercury, promise_pure, thread_safe],</div><div>-"</div><div>-    if (Array0 instanceof int[]) {</div><div>-        ((int[]) Array0)[Index] = (Integer) Item;</div><div>-    } else if (Array0 instanceof double[]) {</div>
<div>-        ((double[]) Array0)[Index] = (Double) Item;</div><div>-    } else if (Array0 instanceof char[]) {</div><div>-        ((char[]) Array0)[Index] = (Character) Item;</div><div>-    } else if (Array0 instanceof boolean[]) {</div>
<div>-        ((boolean[]) Array0)[Index] = (Boolean) Item;</div><div>-    } else {</div><div>-        ((Object[]) Array0)[Index] = Item;</div><div>-    }</div><div>-    Array = Array0;         /* destructive update! */</div>
<div>-").</div><div>-</div><div> %-----------------------------------------------------------------------------%</div><div> </div><div> % lower bounds other than zero are not supported</div><div>diff --git a/library/array2d.m b/library/array2d.m</div>
<div>index d13383e..45dd4b9 100644</div><div>--- a/library/array2d.m</div><div>+++ b/library/array2d.m</div><div>@@ -45,13 +45,6 @@</div><div> :- func init(int, int, T) = array2d(T).</div><div> :- mode init(in, in, in) = array2d_uo is det.</div>
<div>     </div><div>-    % new(M, N, X) = array2d([[X11, ..., X1N], ..., [XM1, ..., XMN]])</div><div>-    % where each XIJ = X.  An exception is thrown if M < 0 or N < 0.</div><div>-    %</div><div>-:- pragma obsolete(new/3).</div>
<div>-:- func new(int, int, T ) = array2d(T).</div><div>-:- mode new(in,  in,  in) = array2d_uo is det.</div><div>-    </div><div>     % array2d([[X11, ..., X1N], ..., [XM1, ..., XMN]]) constructs a array2d</div><div>     % of size M * N, with the special case that bounds(array2d([]), 0, 0).</div>
<div>     %</div><div>@@ -154,11 +147,9 @@</div><div> init(M, N, X) =</div><div>     ( if    M >= 0, N >= 0</div><div>       then  array2d(M, N, array.init(M * N, X))</div><div>-      else  func_error("array2d.new: bounds must be non-negative")</div>
<div>+      else  func_error("array2d.init: bounds must be non-negative")</div><div>     ).</div><div> </div><div>-new(M, N, X) = init(M, N, X).</div><div>-</div><div> %-----------------------------------------------------------------------------%</div>
<div> </div><div> array2d([]) = array2d(0, 0, make_empty_array).</div><div>diff --git a/library/bitmap.m b/library/bitmap.m</div><div>index d2551ac..5bb2a1a 100644</div><div>--- a/library/bitmap.m</div><div>+++ b/library/bitmap.m</div>
<div>@@ -76,24 +76,10 @@</div><div>     %</div><div> :- func init(num_bits::in, bool::in) = (bitmap::bitmap_uo) is det.</div><div> </div><div>-    % new(N, B) creates a bitmap of size N (indexed 0 .. N-1)</div><div>-    % setting each bit if B = yes and clearing each bit if B = no.</div>
<div>-    % An exception is thrown if N is negative.</div><div>-    %</div><div>-:- pragma obsolete(bitmap.new/2).</div><div>-:- func new(num_bits, bool) = bitmap.</div><div>-:- mode new(in, in) = bitmap_uo is det.</div><div>
-</div><div>     % A synonym for init(N, no).</div><div>     %</div><div> :- func init(num_bits::in) = (bitmap::bitmap_uo) is det.</div><div> </div><div>-    % Same as new(N, no).</div><div>-    %</div><div>-:- pragma obsolete(bitmap.new/1).</div>
<div>-:- func new(num_bits) = bitmap.</div><div>-:- mode new(in) = bitmap_uo is det.</div><div>-</div><div>     % Create a new copy of a bitmap.</div><div>     %</div><div> :- func copy(bitmap) = bitmap.</div><div>@@ -452,17 +438,13 @@ init(N) = init(N, no).</div>
<div> </div><div> init(N, B) = BM :-</div><div>     ( if N < 0 then</div><div>-        throw_bitmap_error("bitmap.new: negative size") = _ : int</div><div>+        throw_bitmap_error("bitmap.init: negative size") = _ : int</div>
<div>       else</div><div>         X    = initializer(B),</div><div>         BM0  = initialize_bitmap(allocate_bitmap(N), N, X),</div><div>         BM   = clear_filler_bits(BM0)</div><div>     ).</div><div> </div><div>-new(N, B) = init(N, B).</div>
<div>-</div><div>-new(N) = init(N).</div><div>-</div><div> %-----------------------------------------------------------------------------%</div><div> </div><div> resize(!.BM, NewSize, InitializerBit) = !:BM :-</div><div>diff --git a/library/library.m b/library/library.m</div>
<div>index 64dee72..7e1f0ab 100644</div><div>--- a/library/library.m</div><div>+++ b/library/library.m</div><div>@@ -115,9 +115,6 @@</div><div> :- import_module stream.string_writer.</div><div> :- import_module string.</div>
<div> :- import_module string.builder.</div><div>-:- import_module svlist.</div><div>-:- import_module svpqueue.</div><div>-:- import_module svstack.</div><div> :- import_module table_statistics.</div><div> :- import_module term.</div>
<div> :- import_module term_io.</div><div>@@ -287,9 +284,6 @@ mercury_std_library_module("stream").</div><div> mercury_std_library_module("stream.string_writer").</div><div> mercury_std_library_module("string").</div>
<div> mercury_std_library_module("string.builder").</div><div>-mercury_std_library_module("svlist").</div><div>-mercury_std_library_module("svpqueue").</div><div>-mercury_std_library_module("svstack").</div>
<div> mercury_std_library_module("table_builtin").</div><div> mercury_std_library_module("table_statistics").</div><div> mercury_std_library_module("term").</div><div>diff --git a/library/store.m b/library/store.m</div>
<div>index 283b847..a25e65a 100644</div><div>--- a/library/store.m</div><div>+++ b/library/store.m</div><div>@@ -51,11 +51,6 @@</div><div>     %</div><div> :- some [S] pred store.init(store(S)::uo) is det.</div><div> </div>
<div>-    % A synonym for the above.</div><div>-    %</div><div>-:- pragma obsolete(store.new/1).</div><div>-:- some [S] pred store.new(store(S)::uo) is det.</div><div>-</div><div> %-----------------------------------------------------------------------------%</div>
<div> %</div><div> % Mutvars</div><div>@@ -279,9 +274,6 @@ store_compare(_, _, _) :-</div><div> :- type generic_mutvar(T, S) ---> mutvar(private_builtin.ref(T)).</div><div> :- type generic_ref(T, S) ---> ref(private_builtin.ref(T)).</div>
<div> </div><div>-store.new(S) :-</div><div>-    store.init(S).</div><div>-</div><div> store.init(S) :-</div><div>     store.do_init(S).</div><div> </div><div>diff --git a/library/string.m b/library/string.m</div><div>index 884f7f7..69e1d9a 100644</div>
<div>--- a/library/string.m</div><div>+++ b/library/string.m</div><div>@@ -638,14 +638,6 @@</div><div> % strings into static data even when they might be updated.</div><div> %:- mode string.det_set_char(in, in, di, uo) is det.</div>
<div> </div><div>-    % Deperecated synonyms for the above.</div><div>-    %</div><div>-:- pragma obsolete(string.set_char_det/3).</div><div>-:- func string.set_char_det(char, int, string) = string.</div><div>-:- pragma obsolete(string.set_char_det/4).</div>
<div>-:- pred string.set_char_det(char, int, string, string).</div><div>-:- mode string.set_char_det(in, in, in, out) is det.</div><div>-</div><div>     % string.unsafe_set_char(Char, Index, String0, String):</div><div>     % `String' is `String0', with the code point beginning at code unit</div>
<div>     % `Index' removed and replaced by `Char'.</div><div>@@ -1227,9 +1219,6 @@ string.det_index(String, Int, Char) :-</div><div> </div><div> String ^ elem(Index) = det_index(String, Index).</div><div> </div><div>
-string.set_char_det(Char, Int, !String) :-</div><div>-    string.det_set_char(Char, Int, !String).</div><div>-</div><div> string.det_set_char(Char, Int, String0, String) :-</div><div>     ( string.set_char(Char, Int, String0, String1) -></div>
<div>         String = String1</div><div>@@ -6135,9 +6124,6 @@ string.det_index(S, N) = C :-</div><div> string.unsafe_index(S, N) = C :-</div><div>     string.unsafe_index(S, N, C).</div><div> </div><div>-string.set_char_det(C, N, S0) =</div>
<div>-    string.det_set_char(C, N, S0).</div><div>-</div><div> string.det_set_char(C, N, S0) = S :-</div><div>     string.det_set_char(C, N, S0, S).</div><div> </div><div>diff --git a/library/svlist.m b/library/svlist.m</div>
<div>deleted file mode 100644</div><div>index 38369ab..0000000</div><div>--- a/library/svlist.m</div><div>+++ /dev/null</div><div>@@ -1,104 +0,0 @@</div><div>-%---------------------------------------------------------------------------%</div>
<div>-% vim: ft=mercury ts=4 sw=4 et wm=0 tw=0</div><div>-%---------------------------------------------------------------------------%</div><div>-% Copyright (C) 2011 The University of Melbourne.</div><div>-%</div><div>-% This file may only be copied under the terms of the GNU Library General</div>
<div>-% Public License - see the file COPYING.LIB in the Mercury distribution.</div><div>-%---------------------------------------------------------------------------%</div><div>-%</div><div>-% File: svlist.m.</div><div>-% Authors: fjh, conway, trd, zs, philip, warwick, ...</div>
<div>-% Stability: medium to high.</div><div>-%</div><div>-% This file provides an interface to the 'list' ADT that is conducive to the</div><div>-% use of state variable notation. The predicates here do the same thing as</div>
<div>-% their counterparts in the pqueue module; the only difference is the order</div><div>-% of the arguments.</div><div>-%</div><div>-%---------------------------------------------------------------------------%</div><div>
-%---------------------------------------------------------------------------%</div><div>-</div><div>-:- module svlist.</div><div>-:- interface.</div><div>-</div><div>-:- import_module list.</div><div>-</div><div>-%---------------------------------------------------------------------------%</div>
<div>-</div><div>-    % svlist.delete(Elem, List, Remainder):</div><div>-    %</div><div>-    % True iff `Elem' occurs in `List', and `Remainder' is the result of</div><div>-    % deleting one occurrence of `Elem' from `List'.</div>
<div>-    %</div><div>-:- pred svlist.delete(T, list(T), list(T)).</div><div>-:- mode svlist.delete(in, in, in) is semidet.</div><div>-:- mode svlist.delete(in, in, out) is nondet.</div><div>-:- mode svlist.delete(out, in, out) is nondet.</div>
<div>-:- mode svlist.delete(in, out, in) is multi.</div><div>-</div><div>-    % svlist.delete_first(Elem, List0, List) is true iff Elem occurs in List0</div><div>-    % and List is List0 with the first occurrence of Elem removed.</div>
<div>-    %</div><div>-:- pred svlist.delete_first(T::in, list(T)::in, list(T)::out) is semidet.</div><div>-</div><div>-    % svlist.delete_elems(Elems, List0, List) is true iff List is List0 with</div><div>-    % all occurrences of all elements of Elems removed.</div>
<div>-    %</div><div>-:- pred svlist.delete_elems(list(T)::in, list(T)::in, list(T)::out) is det.</div><div>-    </div><div>-    % svlist.replace(D, R, List0, List) is true iff List is List0</div><div>-    % with an occurrence of D replaced with R.</div>
<div>-    %</div><div>-:- pred svlist.replace(T, T, list(T), list(T)).</div><div>-:- mode svlist.replace(in, in, in, in) is semidet.</div><div>-:- mode svlist.replace(in, in, in, out) is nondet.</div><div>-    </div><div>
-    % svlist.replace_first(D, R, List0, List) is true iff List is List0</div><div>-    % with the first occurrence of D replaced with R.</div><div>-    %</div><div>-:- pred svlist.replace_first(T::in, T::in, list(T)::in, list(T)::out)</div>
<div>-    is semidet.</div><div>-</div><div>-    % svlist.replace_all(D, R, List0, List) is true iff List is List0</div><div>-    % with all occurrences of D replaced with R.</div><div>-    %</div><div>-:- pred svlist.replace_all(T::in, T::in, list(T)::in, list(T)::out) is det.</div>
<div>-    </div><div>-    % svlist.det_replace_nth(N, R, List0, List) is true iff List is List0</div><div>-    % with Nth element replaced with R.</div><div>-    % Aborts if N < 1 or if length of List0 < N.</div><div>
-    % (Position numbers start from 1.)</div><div>-    %</div><div>-:- pred svlist.det_replace_nth(int::in, T::in, list(T)::in, list(T)::out)</div><div>-    is det.</div><div>-</div><div>-%---------------------------------------------------------------------------%</div>
<div>-%---------------------------------------------------------------------------%</div><div>-</div><div>-:- implementation.</div><div>-</div><div>-svlist.delete(E, !List) :-</div><div>-    list.delete(!.List, E, !:List).</div>
<div>-</div><div>-svlist.delete_first(E, !List) :-</div><div>-    list.delete_first(!.List, E, !:List).</div><div>-</div><div>-svlist.delete_elems(Elems, !List) :-</div><div>-    list.delete_elems(!.List, Elems, !:List).</div>
<div>-</div><div>-svlist.replace(D, R, !List) :-</div><div>-    list.replace(!.List, D, R, !:List).</div><div>-</div><div>-svlist.replace_first(D, R, !List) :-</div><div>-    list.replace_first(!.List, D, R, !:List).</div>
<div>-</div><div>-svlist.replace_all(D, R, !List) :-</div><div>-    list.replace_all(!.List, D, R, !:List).</div><div>-</div><div>-svlist.det_replace_nth(N, R, !List) :-</div><div>-    list.det_replace_nth(!.List, N, R, !:List).</div>
<div>-</div><div>-%---------------------------------------------------------------------------%</div><div>-:- end_module svlist.</div><div>-%---------------------------------------------------------------------------%</div>
<div>diff --git a/library/svpqueue.m b/library/svpqueue.m</div><div>deleted file mode 100644</div><div>index fada7f3..0000000</div><div>--- a/library/svpqueue.m</div><div>+++ /dev/null</div><div>@@ -1,56 +0,0 @@</div><div>
-%---------------------------------------------------------------------------%</div><div>-% vim: ft=mercury ts=4 sw=4 et wm=0 tw=0</div><div>-%---------------------------------------------------------------------------%</div>
<div>-% Copyright (C) 2011-2012 The University of Melbourne.</div><div>-%</div><div>-% This file may only be copied under the terms of the GNU Library General</div><div>-% Public License - see the file COPYING.LIB in the Mercury distribution.</div>
<div>-%---------------------------------------------------------------------------%</div><div>-%</div><div>-% File: svpqueue.m.</div><div>-% Main author: conway.</div><div>-% Stability: high.</div><div>-%</div><div>-% This file provides an interface to the 'pqueue' ADT that is conducive to the</div>
<div>-% use of state variable notation. The predicates here do the same thing as</div><div>-% their counterparts in the pqueue module; the only difference is the order</div><div>-% of the arguments.</div><div>-%</div><div>
-%---------------------------------------------------------------------------%</div><div>-%---------------------------------------------------------------------------%</div><div>-</div><div>-:- module svpqueue.</div><div>
-:- interface.</div><div>-</div><div>-:- import_module pqueue.</div><div>-</div><div>-%---------------------------------------------------------------------------%</div><div>-    </div><div>-    % Insert a value V with key K into a priority queue</div>
<div>-    % and return the new priority queue.</div><div>-    %</div><div>-:- pragma obsolete(svpqueue.insert/4).</div><div>-:- pred svpqueue.insert(K::in, V::in, pqueue(K, V)::in, pqueue(K, V)::out)</div><div>-    is det.</div>
<div>-    </div><div>-    % Remove the smallest item from the priority queue.</div><div>-    % Fails if the priority queue is empty.</div><div>-    %</div><div>-:- pragma obsolete(svpqueue.remove/4).</div><div>-:- pred svpqueue.remove(K::out, V::out, pqueue(K, V)::in, pqueue(K, V)::out)</div>
<div>-    is semidet.</div><div>-</div><div>-%---------------------------------------------------------------------------%</div><div>-%---------------------------------------------------------------------------%</div><div>
-</div><div>-:- implementation.</div><div>-</div><div>-svpqueue.insert(K, V, !PQ) :-</div><div>-    pqueue.insert(K, V, !PQ).</div><div>-</div><div>-svpqueue.remove(K, V, !PQ) :-</div><div>-    pqueue.remove(K, V, !PQ).</div>
<div>-</div><div>-%---------------------------------------------------------------------------%</div><div>-:- end_module svpqueue.</div><div>-%---------------------------------------------------------------------------%</div>
<div>diff --git a/library/svstack.m b/library/svstack.m</div><div>deleted file mode 100644</div><div>index 99705cd..0000000</div><div>--- a/library/svstack.m</div><div>+++ /dev/null</div><div>@@ -1,76 +0,0 @@</div><div>-%---------------------------------------------------------------------------%</div>
<div>-% vim: ft=mercury ts=4 sw=4 et wm=0 tw=0</div><div>-%---------------------------------------------------------------------------%</div><div>-% Copyright (C) 2011-2012 The University of Melbourne.</div><div>-% This file may only be copied under the terms of the GNU Library General</div>
<div>-% Public License - see the file COPYING.LIB in the Mercury distribution.</div><div>-%---------------------------------------------------------------------------%</div><div>-% </div><div>-% File: stack.m.</div><div>-% Main author: fjh.</div>
<div>-% Stability: high.</div><div>-%</div><div>-% This file provides an interface to the 'stack' ADT that is conducive to the</div><div>-% use of state variable notation. The predicates here do the same thing as</div>
<div>-% their counterparts in the stack module; the only difference is the order of</div><div>-% the arguments.</div><div>-% </div><div>-%--------------------------------------------------------------------------%</div><div>
-</div><div>-:- module svstack.</div><div>-:- interface.</div><div>-</div><div>-:- import_module list.</div><div>-:- import_module stack.</div><div>-</div><div>-%--------------------------------------------------------------------------%</div>
<div>-</div><div>-    % `svstack.push(Elem, Stack0, Stack)' is true iff `Stack' is</div><div>-    % the stack which results from pushing `Elem' onto the top</div><div>-    % of `Stack0'.</div><div>-    %</div>
<div>-:- pragma obsolete(svstack.push/3).</div><div>-:- pred svstack.push(T::in, stack(T)::in, stack(T)::out) is det.</div><div>-</div><div>-    % `svstack.push_list(Elems, Stack0, Stack)' is true iff `Stack'</div>
<div>-    % is the stack which results from pushing the elements of the</div><div>-    % list `Elems' onto the top of `Stack0'.</div><div>-    %</div><div>-:- pragma obsolete(svstack.push_list/3).</div><div>-:- pred svstack.push_list(list(T)::in, stack(T)::in, stack(T)::out) is det.</div>
<div>-</div><div>-    % `svstack.pop(Elem, Stack0, Stack)' is true iff `Stack0' is</div><div>-    % a non-empty stack whose top element is `Elem', and `Stack'</div><div>-    % the stack which results from popping `Elem' off `Stack0'.</div>
<div>-    %</div><div>-:- pragma obsolete(svstack.pop/3).</div><div>-:- pred svstack.pop(T::out, stack(T)::in, stack(T)::out) is semidet.</div><div>-</div><div>-    % `svstack.det_pop' is like `svstack.pop' except that it will</div>
<div>-    % call error/1 rather than failing if given an empty stack.</div><div>-    %</div><div>-:- pragma obsolete(svstack.det_pop/3).</div><div>-:- pred svstack.det_pop(T::out, stack(T)::in, stack(T)::out) is det.</div>
<div>-</div><div>-%--------------------------------------------------------------------------%</div><div>-%--------------------------------------------------------------------------%</div><div>-</div><div>-:- implementation.</div>
<div>-</div><div>-%--------------------------------------------------------------------------%</div><div>-</div><div>-svstack.push(E, !S) :-</div><div>-    stack.push(E, !S).    </div><div>-</div><div>-svstack.push_list(Es, !S) :-</div>
<div>-    stack.push_list(Es, !S).</div><div>-</div><div>-svstack.pop(E, !S) :-</div><div>-    stack.pop(E, !S).</div><div>-</div><div>-svstack.det_pop(E, !S) :-</div><div>-    stack.det_pop(E, !S).</div><div>-</div><div>
-%--------------------------------------------------------------------------%</div><div>-:- end_module svstack.</div><div>-%--------------------------------------------------------------------------%</div><div>diff --git a/library/thread.semaphore.m b/library/thread.semaphore.m</div>
<div>index 0a050db..d497fe9 100644</div><div>--- a/library/thread.semaphore.m</div><div>+++ b/library/thread.semaphore.m</div><div>@@ -33,20 +33,10 @@</div><div>     %</div><div> :- pred semaphore.init(semaphore::out, io::di, io::uo) is det.</div>
<div> </div><div>-    % A synonym for the above.</div><div>-    %</div><div>-:- pragma obsolete(semaphore.new/3).</div><div>-:- pred semaphore.new(semaphore::out, io::di, io::uo) is det.</div><div>-</div><div>     % Returns a new semaphore `Sem' with its counter initialized to Count.</div>
<div>     %</div><div> :- impure func semaphore.init(int::in) = (semaphore::uo) is det.</div><div> </div><div>-    % A synonym for the above.</div><div>-    %</div><div>-:- pragma obsolete(semaphore.new/1).</div><div>-:- impure func semaphore.new(int::in) = (semaphore::uo) is det.</div>
<div>-</div><div>     % wait(Sem, !IO) blocks until the counter associated with `Sem'</div><div>     % becomes greater than 0, whereupon it wakes, decrements the</div><div>     % counter and returns.</div><div>@@ -116,12 +106,6 @@ ML_finalize_semaphore(void *obj, void *cd);</div>
<div> </div><div> %-----------------------------------------------------------------------------%</div><div> </div><div>-new(Semaphore, !IO) :-</div><div>-    init(Semaphore, !IO).</div><div>-</div><div>-new(Count) = Semaphore :-</div>
<div>-    impure Semaphore = init(Count).</div><div>-</div><div> init(Semaphore, !IO) :-</div><div>     promise_pure (</div><div>         impure Semaphore = init(0)</div><div>diff --git a/library/version_array.m b/library/version_array.m</div>
<div>index 609e9a4..c1c0b3d 100644</div><div>--- a/library/version_array.m</div><div>+++ b/library/version_array.m</div><div>@@ -79,11 +79,6 @@</div><div>     %</div><div> :- func init(int, T) = version_array(T).</div><div>
 </div><div>-    % new(N, X) returns an array of size N with each item initialised to X.</div><div>-    %</div><div>-:- pragma obsolete(new/2).</div><div>-:- func new(int, T) = version_array(T).</div><div>-</div><div>     % Same as empty/0 except the resulting version_array is not thread safe.</div>
<div>     %</div><div>     % That is your program can crash or behave strangely if you attempt to</div><div>@@ -94,7 +89,7 @@</div><div>     %</div><div> :- func unsafe_empty = version_array(T).</div><div> </div><div>-    % Same as new(N, X) except the resulting version_array is not thread safe.</div>
<div>+    % Same as init(N, X) except the resulting version_array is not thread safe.</div><div>     %</div><div>     % That is your program can crash or behave strangely if you attempt to</div><div>     % concurrently access or update the array from different threads, or any</div>
<div>@@ -102,6 +97,11 @@</div><div>     % However this version is much quicker if you guarantee that you never</div><div>     % concurrently access the version array.</div><div>     %</div><div>+:- func unsafe_init(int, T) = version_array(T).</div>
<div>+</div><div>+    % An obsolete synonym for the above.</div><div>+    %</div><div>+:- pragma obsolete(unsafe_new/2).</div><div> :- func unsafe_new(int, T) = version_array(T).</div><div> </div><div>     % version_array(Xs) returns an array constructed from the items in the list</div>
<div>@@ -249,10 +249,6 @@</div><div> </div><div> %-----------------------------------------------------------------------------%</div><div> </div><div>-new(N, X) = version_array.init(N, X).</div><div>-</div><div>-%-----------------------------------------------------------------------------%</div>
<div>-</div><div> version_array([]) = version_array.empty.</div><div> version_array([X | Xs]) = VA :-</div><div>     VA0 = version_array.init(1 + list.length(Xs), X),</div><div>@@ -660,8 +656,10 @@ cmp_version_array_2(I, Size, VAa, VAb, R) :-</div>
<div>     VA = new ML_sva(ML_uva.init(N, X));</div><div> ").</div><div> </div><div>+unsafe_new(N, X) = unsafe_init(N, X).</div><div>+</div><div> :- pragma foreign_proc("C",</div><div>-    version_array.unsafe_new(N::in, X::in) = (VA::out),</div>
<div>+    version_array.unsafe_init(N::in, X::in) = (VA::out),</div><div>     [will_not_call_mercury, promise_pure, thread_safe, will_not_modify_trail,</div><div>         does_not_affect_liveness, may_not_duplicate],</div>
<div> "</div><div>@@ -688,7 +686,7 @@ cmp_version_array_2(I, Size, VAa, VAb, R) :-</div><div> ").</div><div> </div><div> :- pragma foreign_proc("C#",</div><div>-    version_array.unsafe_new(N::in, X::in) = (VA::out),</div>
<div>+    version_array.unsafe_init(N::in, X::in) = (VA::out),</div><div>     [will_not_call_mercury, promise_pure, thread_safe, will_not_modify_trail,</div><div>         does_not_affect_liveness, may_not_duplicate],</div>
<div> "</div><div>@@ -696,7 +694,7 @@ cmp_version_array_2(I, Size, VAa, VAb, R) :-</div><div> ").</div><div> </div><div> :- pragma foreign_proc("Java",</div><div>-    version_array.unsafe_new(N::in, X::in) = (VA::out),</div>
<div>+    version_array.unsafe_init(N::in, X::in) = (VA::out),</div><div>     [will_not_call_mercury, promise_pure, thread_safe, will_not_modify_trail,</div><div>         does_not_affect_liveness, may_not_duplicate],</div>
<div> "</div><div>diff --git a/library/version_array2d.m b/library/version_array2d.m</div><div>index f77ced2..36b5e9c 100644</div><div>--- a/library/version_array2d.m</div><div>+++ b/library/version_array2d.m</div><div>
@@ -45,14 +45,6 @@</div><div>     %</div><div> :- func init(int, int, T) = version_array2d(T).</div><div> </div><div>-    % new(M, N, X) = version_array2d([[X11, ..., X1N], ..., [XM1, ..., XMN]])</div><div>-    % where each XIJ = X.</div>
<div>-    %</div><div>-    % An exception is thrown if M < 0 or N < 0.</div><div>-    %</div><div>-:- pragma obsolete(new/3).</div><div>-:- func new(int, int, T) = version_array2d(T).</div><div>-</div><div>     % version_array2d([[X11, ..., X1N], ..., [XM1, ..., XMN]]) ^ elem(I, J) = X</div>
<div>     % where X is the J+1th element of the I+1th row (i.e. indices start from</div><div>     % zero.)</div><div>@@ -145,8 +137,6 @@ init(M, N, X) =</div><div>       else  func_error("version_array2d.new: bounds must be non-negative")</div>
<div>     ).</div><div> </div><div>-new(M, N, X) = init(M, N, X).</div><div>-</div><div> %-----------------------------------------------------------------------------%</div><div> </div><div> bounds(version_array2d(M, N, _A), M, N).</div>
<div>diff --git a/library/version_bitmap.m b/library/version_bitmap.m</div><div>index abecc08..cbfc294 100644</div><div>--- a/library/version_bitmap.m</div><div>+++ b/library/version_bitmap.m</div><div>@@ -36,13 +36,6 @@</div>
<div>     %</div><div> :- func init(int, bool) = version_bitmap.</div><div> </div><div>-    % new(N, B) creates a version_bitmap of size N (indexed 0 .. N-1)</div><div>-    % setting each bit if B = yes and clearing each bit if B = no.</div>
<div>-    % An exception is thrown if N is negative.</div><div>-    %</div><div>-:- pragma obsolete(new/2).</div><div>-:- func new(int, bool) = version_bitmap.</div><div>-</div><div>     % Returns the number of bits in a version_bitmap.</div>
<div>     %</div><div> :- func num_bits(version_bitmap) = int.</div><div>@@ -137,8 +130,6 @@</div><div> </div><div> %-----------------------------------------------------------------------------%</div><div> </div><div>-new(N, B) = init(N, B).</div>
<div>-</div><div> init(N, B) = BM :-</div><div>     ( if N < 0 then</div><div>         throw(software_error("version_bitmap.init: negative size"))</div><div>diff --git a/library/version_hash_table.m b/library/version_hash_table.m</div>
<div>index 04d3389..15085aa 100644</div><div>--- a/library/version_hash_table.m</div><div>+++ b/library/version_hash_table.m</div><div>@@ -49,10 +49,6 @@</div><div> :- func init(hash_pred(K)::in(hash_pred), int::in, float::in) = </div>
<div>     (version_hash_table(K, V)::out) is det.</div><div> </div><div>-:- pragma obsolete(new/3).</div><div>-:- func new(hash_pred(K)::in(hash_pred), int::in, float::in) =</div><div>-    (version_hash_table(K, V)::out) is det.</div>
<div>-</div><div>     % unsafe_init(HashPred, N, MaxOccupancy)</div><div>     %</div><div>     % Like init/3, but the constructed hash table is backed by a non-thread safe</div><div>@@ -66,20 +62,12 @@</div><div> :- func unsafe_init(hash_pred(K)::in(hash_pred), int::in, float::in) =</div>
<div>    (version_hash_table(K, V)::out) is det.</div><div> </div><div>-:- pragma obsolete(unsafe_new/3).</div><div>-:- func unsafe_new(hash_pred(K)::in(hash_pred), int::in, float::in) =</div><div>-   (version_hash_table(K, V)::out) is det.</div>
<div>-</div><div>     % init_default(HashFn) constructs a hash table with default size and</div><div>     % occupancy arguments.</div><div>     %</div><div> :- func init_default(hash_pred(K)::in(hash_pred)) =</div><div>    (version_hash_table(K, V)::out) is det.</div>
<div> </div><div>-:- pragma obsolete(new_default/1).</div><div>-:- func new_default(hash_pred(K)::in(hash_pred)) =</div><div>-   (version_hash_table(K, V)::out) is det.</div><div>-</div><div>     % unsafe_init_default(HashFn)</div>
<div>     %</div><div>     % Like init_default/3 but the constructed hash table is backed by a</div><div>@@ -88,10 +76,6 @@</div><div> :- func unsafe_init_default(hash_pred(K)::in(hash_pred)) =</div><div>    (version_hash_table(K, V)::out) is det.</div>
<div> </div><div>-:- pragma obsolete(unsafe_new_default/1).</div><div>-:- func unsafe_new_default(hash_pred(K)::in(hash_pred)) =</div><div>-   (version_hash_table(K, V)::out) is det.</div><div>-</div><div>     % Retrieve the hash_pred associated with a hash table.</div>
<div>     %</div><div> % :- func hash_pred(version_hash_table(K, V)) = hash_pred(K).</div><div>@@ -254,12 +238,8 @@</div><div> </div><div> init(HashPred, N, MaxOccupancy) = init_2(HashPred, N, MaxOccupancy, yes).</div><div>
 </div><div>-new(HashPred, N, MaxOccupancy) = init_2(HashPred, N, MaxOccupancy, yes).</div><div>-</div><div> unsafe_init(HashPred, N, MaxOccupancy) = init_2(HashPred, N, MaxOccupancy, no).</div><div> </div><div>-unsafe_new(HashPred, N, MaxOccupancy) = init_2(HashPred, N, MaxOccupancy, no).</div>
<div>-</div><div> :- func init_2(hash_pred(K)::in(hash_pred), int::in, float::in, bool::in) =</div><div>     (version_hash_table(K, V)::out) is det.</div><div> </div><div>@@ -280,7 +260,7 @@ init_2(HashPred, N, MaxOccupancy, NeedSafety) = HT :-</div>
<div>                 Buckets = version_array.init(NumBuckets, ht_nil)</div><div>             ;</div><div>                 NeedSafety = no,</div><div>-                Buckets = version_array.unsafe_new(NumBuckets, ht_nil)</div>
<div>+                Buckets = version_array.unsafe_init(NumBuckets, ht_nil)</div><div>             ),</div><div>             HT = ht(0, MaxOccupants, HashPred, Buckets)</div><div>     ).</div><div>@@ -290,10 +270,8 @@ init_2(HashPred, N, MaxOccupancy, NeedSafety) = HT :-</div>
<div>     % These numbers are picked out of thin air.</div><div>     %</div><div> init_default(HashPred) = init(HashPred, 7, 0.9).</div><div>-new_default(HashPred) = init(HashPred, 7, 0.9).</div><div> </div><div> unsafe_init_default(HashPred) = unsafe_init(HashPred, 7, 0.9).</div>
<div>-unsafe_new_default(HashPred) = unsafe_init(HashPred, 7, 0.9).</div><div> </div><div> %-----------------------------------------------------------------------------%</div><div> </div><div>diff --git a/library/version_store.m b/library/version_store.m</div>
<div>index 66b073a..31389cf 100644</div><div>--- a/library/version_store.m</div><div>+++ b/library/version_store.m</div><div>@@ -39,11 +39,6 @@</div><div>     %</div><div> :- some [S] func init = version_store(S).</div><div>
 </div><div>-    % A synonym for the above.</div><div>-    %</div><div>-:- pragma obsolete(new/0).</div><div>-:- some [S] func new = version_store(S).</div><div>-</div><div>     % new_mutvar(X, Mutvar, VS0, VS) adds a new mutvar with value reference X</div>
<div>     % to the version store.</div><div>     %</div><div>@@ -131,8 +126,6 @@ init = version_store(VA) `with_type` version_store(some_version_store_type) :-</div><div>         %</div><div>     VA = version_array.init(256, univ(counter.init(1) `with_type` counter)).</div>
<div> </div><div>-new = init.</div><div>-</div><div> %-----------------------------------------------------------------------------%</div><div> </div><div> new_mutvar(X, Mutvar, VS0, VS) :-</div><div>diff --git a/tests/hard_coded/bit_buffer_test.m b/tests/hard_coded/bit_buffer_test.m</div>
<div>index c6166e7..8bafaf2 100644</div><div>--- a/tests/hard_coded/bit_buffer_test.m</div><div>+++ b/tests/hard_coded/bit_buffer_test.m</div><div>@@ -432,7 +432,7 @@ do_write(check_buffer_status(_), !Buffer).</div><div> </div>
<div> requests_to_bitmap(Requests) = !:BM :-</div><div>         Size = request_list_length(Requests, 0),</div><div>-        !:BM = bitmap.new(Size),</div><div>+        !:BM = bitmap.init(Size),</div><div>         list.foldl2(request_to_bitmap, Requests, 0, _, !BM).</div>
<div> </div><div> :- func request_list_length(list(request), int) = int.</div><div>@@ -598,7 +598,7 @@ do_read(Desc, ReqIndex, bits(ExpectedWord0, NumBits), !Buffer) :-</div><div> </div><div> do_read(Desc, ReqIndex, bitmap(SourceBM, Index, NumBits), !Buffer) :-</div>
<div>     some [!BM] (</div><div>-        !:BM = bitmap.new(SourceBM ^ num_bits),</div><div>+        !:BM = bitmap.init(SourceBM ^ num_bits),</div><div>         ( Index = 0, NumBits = SourceBM ^ num_bits -></div><div>             get_bitmap(!BM, BitsRead, GetResult, !Buffer)</div>
<div>         ;</div><div>@@ -606,7 +606,7 @@ do_read(Desc, ReqIndex, bitmap(SourceBM, Index, NumBits), !Buffer) :-</div><div>         ),</div><div>         (</div><div>             GetResult = ok,</div><div>-            ExpectedBM0 = bitmap.new(SourceBM ^ num_bits),</div>
<div>+            ExpectedBM0 = bitmap.init(SourceBM ^ num_bits),</div><div>             ExpectedBM = copy_bits(SourceBM, Index,</div><div>                             ExpectedBM0, Index, NumBits),</div><div>             ( ExpectedBM = !.BM -></div>
<div>diff --git a/tests/hard_coded/bitmap_empty.m b/tests/hard_coded/bitmap_empty.m</div><div>index ac7af06..ac7e59a 100644</div><div>--- a/tests/hard_coded/bitmap_empty.m</div><div>+++ b/tests/hard_coded/bitmap_empty.m</div>
<div>@@ -21,7 +21,7 @@</div><div> </div><div> main(!IO) :-</div><div>     io.write_string("-- new\n", !IO),</div><div>-    A0 = bitmap.new(0, no) : bitmap,</div><div>+    A0 = bitmap.init(0, no) : bitmap,</div><div>
     io.write(A0, !IO),</div><div>     <a href="http://io.nl">io.nl</a>(!IO),</div><div> </div><div>@@ -34,7 +34,7 @@ main(!IO) :-</div><div> </div><div>     io.write_string("-- resize\n", !IO),</div><div>     some [B0, B1, B2, B3] (</div>
<div>-        B0 = bitmap.new(0, no),</div><div>+        B0 = bitmap.init(0, no),</div><div>         B1 = resize(B0, 0, no),     % no change</div><div>         io.write(B1, !IO),</div><div>         <a href="http://io.nl">io.nl</a>(!IO),</div>
<div>@@ -48,7 +48,7 @@ main(!IO) :-</div><div> </div><div>     io.write_string("-- shrink_without_copying\n", !IO),</div><div>     some [B0, B1] (</div><div>-        B0 = bitmap.new(4, no),</div><div>+        B0 = bitmap.init(4, no),</div>
<div>         B1 = shrink_without_copying(B0, 0),</div><div>         io.write(B1, !IO),</div><div>         <a href="http://io.nl">io.nl</a>(!IO)</div><div>@@ -117,7 +117,7 @@ main(!IO) :-</div><div> </div><div>     io.write_string("-- ^bits:=\n", !IO),</div>
<div>     some [B0, B1] (</div><div>-        B0 = bitmap.new(0, no),</div><div>+        B0 = bitmap.init(0, no),</div><div>         B1 = B0 ^ bits(0, 0) := 0,</div><div>         io.write(B1, !IO),</div><div>         <a href="http://io.nl">io.nl</a>(!IO)</div>
<div>@@ -138,7 +138,7 @@ main(!IO) :-</div><div>     io.write_string("-- ^byte:=\n", !IO),</div><div>     some [B0, B1] (</div><div>         (try [] (</div><div>-            B0 = bitmap.new(0, no),</div><div>+            B0 = bitmap.init(0, no),</div>
<div>             B1 = B0 ^ byte(0) := 0</div><div>         )</div><div>         then</div><div>@@ -168,7 +168,7 @@ main(!IO) :-</div><div>     io.write_string("-- flip\n", !IO),</div><div>     some [B0, B1] (</div>
<div>         (try [] (</div><div>-            B0 = bitmap.new(0, no),</div><div>+            B0 = bitmap.init(0, no),</div><div>             B1 = flip(B0, 0)</div><div>         )</div><div>         then</div><div>@@ -180,8 +180,8 @@ main(!IO) :-</div>
<div>         )</div><div>     ),</div><div> </div><div>-    A1 = bitmap.new(0, no),</div><div>-    A2 = bitmap.new(0, no),</div><div>+    A1 = bitmap.init(0, no),</div><div>+    A2 = bitmap.init(0, no),</div><div> </div>
<div>     io.write_string("-- complement\n", !IO),</div><div>     Bcompl = complement(A1),</div><div>@@ -210,9 +210,9 @@ main(!IO) :-</div><div> </div><div>     io.write_string("-- append_list\n", !IO),</div>
<div>     some [B0, B1, B2, B3] (</div><div>-        B0 = bitmap.new(1, yes),</div><div>-        B1 = bitmap.new(0, yes),</div><div>-        B2 = bitmap.new(1, yes),</div><div>+        B0 = bitmap.init(1, yes),</div><div>
+        B1 = bitmap.init(0, yes),</div><div>+        B2 = bitmap.init(1, yes),</div><div>         B3 = append_list([B0, B1, B2]),</div><div>         io.write(B3, !IO),</div><div>         <a href="http://io.nl">io.nl</a>(!IO)</div>
<div>@@ -220,8 +220,8 @@ main(!IO) :-</div><div> </div><div>     io.write_string("-- copy_bits\n", !IO),</div><div>     some [B0, B1, B2] (</div><div>-        B0 = bitmap.new(1, yes),</div><div>-        B1 = bitmap.new(0, yes),</div>
<div>+        B0 = bitmap.init(1, yes),</div><div>+        B1 = bitmap.init(0, yes),</div><div>         B2 = copy_bits(B0, 0, B1, 0, 0),</div><div>         io.write(B2, !IO),</div><div>         <a href="http://io.nl">io.nl</a>(!IO)</div>
<div>@@ -229,7 +229,7 @@ main(!IO) :-</div><div> </div><div>     io.write_string("-- copy_bits_in_bitmap\n", !IO),</div><div>     some [B0, B1] (</div><div>-        B0 = bitmap.new(0, no),</div><div>+        B0 = bitmap.init(0, no),</div>
<div>         B1 = copy_bits_in_bitmap(B0, 0, 0, 0),</div><div>         io.write(B1, !IO),</div><div>         <a href="http://io.nl">io.nl</a>(!IO)</div><div>@@ -237,8 +237,8 @@ main(!IO) :-</div><div> </div><div>     io.write_string("-- copy_bytes\n", !IO),</div>
<div>     some [B0, B1, B2] (</div><div>-        B0 = bitmap.new(8, yes),</div><div>-        B1 = bitmap.new(0, no),</div><div>+        B0 = bitmap.init(8, yes),</div><div>+        B1 = bitmap.init(0, no),</div><div>         B2 = copy_bytes(B0, 0, B1, 0, 0),</div>
<div>         io.write(B2, !IO),</div><div>         <a href="http://io.nl">io.nl</a>(!IO)</div><div>@@ -246,7 +246,7 @@ main(!IO) :-</div><div> </div><div>     io.write_string("-- copy_bytes_in_bitmap\n", !IO),</div>
<div>     some [B0, B1] (</div><div>-        B0 = bitmap.new(0, no),</div><div>+        B0 = bitmap.init(0, no),</div><div>         B1 = copy_bytes_in_bitmap(B0, 0, 0, 0),</div><div>         io.write(B1, !IO),</div><div>         <a href="http://io.nl">io.nl</a>(!IO)</div>
<div>@@ -274,8 +274,8 @@ main(!IO) :-</div><div> </div><div>     io.write_string("-- bitmap_equal\n", !IO),</div><div>     some [B0, B1] (</div><div>-        B0 = bitmap.new(0, no),</div><div>-        B1 = bitmap.new(0, no),</div>
<div>+        B0 = bitmap.init(0, no),</div><div>+        B1 = bitmap.init(0, no),</div><div>         ( B0 = B1 -></div><div>             io.write_string("equal\n", !IO)</div><div>         ;</div><div>@@ -285,8 +285,8 @@ main(!IO) :-</div>
<div> </div><div>     io.write_string("-- bitmap_compare\n", !IO),</div><div>     some [B0, B1] (</div><div>-        B0 = bitmap.new(0, no),</div><div>-        B1 = bitmap.new(0, no),</div><div>+        B0 = bitmap.init(0, no),</div>
<div>+        B1 = bitmap.init(0, no),</div><div>         compare(Compare, B0, B1),</div><div>         io.write(Compare, !IO),</div><div>         <a href="http://io.nl">io.nl</a>(!IO)</div><div>diff --git a/tests/hard_coded/bitmap_test.m b/tests/hard_coded/bitmap_test.m</div>
<div>index d3e6ba8..cbb1dcb 100644</div><div>--- a/tests/hard_coded/bitmap_test.m</div><div>+++ b/tests/hard_coded/bitmap_test.m</div><div>@@ -172,7 +172,7 @@ run_test({}, !IO) :-</div><div>     test_binary_io(!IO),</div>
<div>     </div><div>     some [!BM] (</div><div>-        !:BM = bitmap.new(64, yes),</div><div>+        !:BM = bitmap.init(64, yes),</div><div>         !:BM = !.BM ^ bits(32, 16) := 0b1011011100100101,</div><div>         test_exception(</div>
<div>             ((pred) is semidet :-</div><div>@@ -362,9 +362,9 @@ test_binary_op_2(BMStr1, BM1, OpStr, Op, BMStr2, BM2, Writer, !IO) :-</div><div> </div><div> test_binary_io(!IO) :-</div><div>     FileName = "bitmap_test_output",</div>
<div>-    BMa0 = bitmap.new(64, yes),</div><div>+    BMa0 = bitmap.init(64, yes),</div><div>     BMa = BMa0 ^ bits(32, 16) := 0b1011011100100101,</div><div>-    BMb0 = bitmap.new(47, yes),</div><div>+    BMb0 = bitmap.init(47, yes),</div>
<div>     BMb = BMb0 ^ bits(11, 16) := 0b1011010110100101,</div><div>     io.open_binary_output(FileName, OpenRes, !IO),</div><div>     (</div><div>@@ -375,7 +375,7 @@ test_binary_io(!IO) :-</div><div>         io.open_binary_input(FileName, OpenInputRes, !IO),</div>
<div>         (</div><div>             OpenInputRes = ok(IStream),</div><div>-            InputBMa0 = bitmap.new(64, no),</div><div>+            InputBMa0 = bitmap.init(64, no),</div><div>             io.read_bitmap(IStream, InputBMa0, InputBMa,</div>
<div>                 BytesReadA, ReadResA, !IO),</div><div>             (</div><div>@@ -387,7 +387,7 @@ test_binary_io(!IO) :-</div><div>             ;</div><div>                 io.write_string("First read failed\n", !IO)</div>
<div>             ),</div><div>-            InputBMb0 = bitmap.new(32, no),</div><div>+            InputBMb0 = bitmap.init(32, no),</div><div>             io.read_bitmap(IStream, InputBMb0, InputBMb1,</div><div>                 BytesReadB, ReadResB, !IO),</div>
<div> </div><div>@@ -420,9 +420,9 @@ test_binary_io(!IO) :-</div><div> </div><div> test_text_io(!IO) :-</div><div>     FileName = "bitmap_test_output2",</div><div>-    BMa0 = bitmap.new(64, yes),</div><div>+    BMa0 = bitmap.init(64, yes),</div>
<div>     BMa = BMa0 ^ bits(32, 16) := 0b1011011100100101,</div><div>-    BMb0 = bitmap.new(47, yes),</div><div>+    BMb0 = bitmap.init(47, yes),</div><div>     BMb = BMb0 ^ bits(11, 16) := 0b1011010110100101,</div><div>     io.write_string("BMa = ", !IO),</div>
<div>     io.write(BMa, !IO),</div><div>diff --git a/tests/hard_coded/bitmap_tester.m b/tests/hard_coded/bitmap_tester.m</div><div>index 9a38992..b49e69c 100644</div><div>--- a/tests/hard_coded/bitmap_tester.m</div><div>+++ b/tests/hard_coded/bitmap_tester.m</div>
<div>@@ -191,7 +191,7 @@</div><div> </div><div> %-----------------------------------------------------------------------------%</div><div> </div><div>-new(N, B) = new(N, B) - new(N, B).</div><div>+new(N, B) = bitmap.init(N, B) - new(N, B).</div>
<div> </div><div> %-----------------------------------------------------------------------------%</div><div> </div><div>diff --git a/tests/hard_coded/exceptions/tricky_try_store.m b/tests/hard_coded/exceptions/tricky_try_store.m</div>
<div>index ce6d4eb..e2d03a2 100644</div><div>--- a/tests/hard_coded/exceptions/tricky_try_store.m</div><div>+++ b/tests/hard_coded/exceptions/tricky_try_store.m</div><div>@@ -1,5 +1,5 @@</div><div>-% There is one tricky aspect with exception__try_store.  If we're not</div>
<div>-% careful, the user could use `store__extract_ref_value', which destroys</div><div>+% There is one tricky aspect with exception.try_store.  If we're not</div><div>+% careful, the user could use `store.extract_ref_value', which destroys</div>
<div> % the store and extracts the referenced value without making a copy.</div><div> % The user could then throw the extracted value, and if the handler gets</div><div> % both the extracted value and a unique version of the store, then it</div>
<div>@@ -22,7 +22,7 @@</div><div> :- module tricky_try_store.</div><div> :- interface.</div><div> :- import_module io.</div><div>-:- pred main(io__state::di, io__state::uo) is cc_multi.</div><div>+:- pred main(io::di, io::uo) is cc_multi.</div>
<div> </div><div> :- implementation.</div><div> :- import_module exception, store, list.</div><div>@@ -31,19 +31,19 @@</div><div> :- mode tricky(in, out, di, uo) is det.</div><div> </div><div> tricky(Key, _Output, Store0, _Store) :-</div>
<div>-<span class="" style="white-space:pre">   </span>store__extract_ref_value(Store0, Key, Value),</div><div>+<span class="" style="white-space:pre">     </span>store.extract_ref_value(Store0, Key, Value),</div><div> <span class="" style="white-space:pre">      </span>throw(Value).</div>
<div> </div><div>-main --></div><div>-<span class="" style="white-space:pre">        </span>{ store__new(Store0) },</div><div>-<span class="" style="white-space:pre">   </span>{ store__new_ref(mklist("initial"), Key, Store0, Store1) },</div>
<div>-<span class="" style="white-space:pre">   </span>{ store__arg_ref(Key, 0, SubKey, Store1, Store2) },</div><div>-<span class="" style="white-space:pre">       </span>{ exception__try_store(tricky(Key), Result, Store2, Store3) },</div>
<div>-<span class="" style="white-space:pre">   </span>print("Result = "), print(Result), nl,</div><div>-<span class="" style="white-space:pre">  </span>{ store__set_ref_value(SubKey, "updated", Store3, Store) },</div>
<div>-<span class="" style="white-space:pre">   </span>print("Result = "), print(Result), nl,</div><div>-<span class="" style="white-space:pre">  </span>{ store__extract_ref_value(Store, Key, Val) },</div><div>-<span class="" style="white-space:pre">    </span>print("Val = "), print(Val), nl.</div>
<div>+main(!IO) :-</div><div>+<span class="" style="white-space:pre">       </span>store.init(Store0),</div><div>+<span class="" style="white-space:pre">       </span>store.new_ref(mklist("initial"), Key, Store0, Store1),</div>
<div>+<span class="" style="white-space:pre">   </span>store.arg_ref(Key, 0, SubKey, Store1, Store2),</div><div>+<span class="" style="white-space:pre">    </span>exception.try_store(tricky(Key), Result, Store2, Store3),</div>
<div>+<span class="" style="white-space:pre">   </span>print("Result = ", !IO), print(Result, !IO), nl(!IO),</div><div>+<span class="" style="white-space:pre">   </span>store.set_ref_value(SubKey, "updated", Store3, Store),</div>
<div>+<span class="" style="white-space:pre">   </span>print("Result = ", !IO), print(Result, !IO), nl(!IO),</div><div>+<span class="" style="white-space:pre">   </span>store.extract_ref_value(Store, Key, Val),</div>
<div>+<span class="" style="white-space:pre">   </span>print("Val = ", !IO), print(Val, !IO), nl(!IO).</div><div> </div><div> % XXX the current compiler has a bug whereby it generates static ground terms</div><div>
 %     even for things that are used in `di' modes.  To avoid that bug,</div><div>diff --git a/tests/hard_coded/null_char.m b/tests/hard_coded/null_char.m</div><div>index edb154c..dea5055 100644</div><div>--- a/tests/hard_coded/null_char.m</div>
<div>+++ b/tests/hard_coded/null_char.m</div><div>@@ -56,7 +56,7 @@ test2(String) :-</div><div> :- pred test3(string::out) is det.</div><div> </div><div> test3(String) :-</div><div>-<span class="" style="white-space:pre">       </span>String = string.set_char_det(nul, 2, "1234").</div>
<div>+<span class="" style="white-space:pre">   </span>String = string.det_set_char(nul, 2, "1234").</div><div> </div><div> :- pred test4(string::out) is det.</div><div> </div><div>diff --git a/tests/hard_coded/test_array2d.m b/tests/hard_coded/test_array2d.m</div>
<div>index f378f6e..d7fcd11 100644</div><div>--- a/tests/hard_coded/test_array2d.m</div><div>+++ b/tests/hard_coded/test_array2d.m</div><div>@@ -52,7 +52,7 @@ main(!IO) :-</div><div>     write_array2d("Two_b", Two_b, !IO),</div>
<div>     <a href="http://io.nl">io.nl</a>(!IO),</div><div> </div><div>-    Zeroes = array2d.new(3, 3, 0),</div><div>+    Zeroes = array2d.init(3, 3, 0),</div><div>     write_array2d("Zeroes", Zeroes, !IO),</div>
<div>     <a href="http://io.nl">io.nl</a>(!IO),</div><div> </div><div>diff --git a/tests/hard_coded/test_semaphore.m b/tests/hard_coded/test_semaphore.m</div><div>index aeaaf1b..7598b44 100644</div><div>--- a/tests/hard_coded/test_semaphore.m</div>
<div>+++ b/tests/hard_coded/test_semaphore.m</div><div>@@ -15,7 +15,7 @@</div><div> :- import_module thread.semaphore.</div><div> </div><div> main(!IO) :-</div><div>-    semaphore.new(S, !IO),</div><div>+    semaphore.init(S, !IO),</div>
<div>     semaphore.signal(S, !IO),</div><div>     semaphore.signal(S, !IO),</div><div>     semaphore.wait(S, !IO),</div><div>diff --git a/tests/hard_coded/version_hash_table_delete.m b/tests/hard_coded/version_hash_table_delete.m</div>
<div>index 0bd69c5..3f579fb 100644</div><div>--- a/tests/hard_coded/version_hash_table_delete.m</div><div>+++ b/tests/hard_coded/version_hash_table_delete.m</div><div>@@ -20,7 +20,7 @@</div><div> </div><div> main(!IO) :-</div>
<div>     some [!HT] (</div><div>-        !:HT = version_hash_table.new_default(generic_hash),</div><div>+        !:HT = version_hash_table.init_default(generic_hash),</div><div>         list.foldl(fill, keys, !HT),</div>
<div>         list.foldl(version_hash_table.delete, keys, !HT),</div><div>         Residue = version_hash_table.to_assoc_list(!.HT),</div><div>diff --git a/tests/hard_coded/version_hash_table_test.m b/tests/hard_coded/version_hash_table_test.m</div>
<div>index 691d22e..3a9986d 100644</div><div>--- a/tests/hard_coded/version_hash_table_test.m</div><div>+++ b/tests/hard_coded/version_hash_table_test.m</div><div>@@ -24,7 +24,7 @@</div><div> main(!IO) :-</div><div>     % Test `fold' which had an off-by-one bug.</div>
<div>     some [!HT] (</div><div>-        !:HT = version_hash_table.new_default(generic_hash),</div><div>+        !:HT = version_hash_table.init_default(generic_hash),</div><div>         version_hash_table.set("one", 1, !HT),</div>
<div>         version_hash_table.set("two", 2, !HT),</div><div>         version_hash_table.set("three", 3, !HT),</div><div>diff --git a/tests/tabling/expand_bitmap.m b/tests/tabling/expand_bitmap.m</div>
<div>index 3855d55..05df33c 100644</div><div>--- a/tests/tabling/expand_bitmap.m</div><div>+++ b/tests/tabling/expand_bitmap.m</div><div>@@ -21,8 +21,8 @@ main(!IO) :-</div><div> <span class="" style="white-space:pre">      </span>random__init(0, RS0),</div>
<div> <span class="" style="white-space:pre">   </span>random__permutation(range(0, 1023), Perm, RS0, RS1),</div><div> </div><div>-<span class="" style="white-space:pre">      </span>BM1 = bitmap.new(45, yes) ^ bits(20, 8) := 0b10001001,</div>
<div>-<span class="" style="white-space:pre">   </span>BM2 = bitmap.new(123, no) ^ bits(10, 8) := 0b10101010,</div><div>+<span class="" style="white-space:pre">    </span>BM1 = bitmap.init(45, yes) ^ bits(20, 8) := 0b10001001,</div>
<div>+<span class="" style="white-space:pre">   </span>BM2 = bitmap.init(123, no) ^ bits(10, 8) := 0b10101010,</div><div> <span class="" style="white-space:pre">   </span>choose_signs_and_enter(Perm, BM1, Solns1, RS1, RS2),</div>
<div> <span class="" style="white-space:pre">   </span>( test_tables(Solns1, yes) -></div><div> <span class="" style="white-space:pre">          </span>io__write_string("First test successful.\n", !IO)</div><div><br></div>
</div>