[m-dev.] for review: function def's for single out det mode library predicates

Fergus Henderson fjh at cs.mu.OZ.AU
Wed May 26 15:49:23 AEST 1999

> --- array.m	1999/03/31 04:42:49	1.53
> +++ array.m	1999/05/26 04:23:58
> @@ -209,6 +215,9 @@
>  :- mode array__bsearch(array_ui, in, pred(in, in, out) is det, out) is det.
>  :- mode array__bsearch(in, in, pred(in, in, out) is det, out) is det.
> +	% XXX rwab1: I observe that the comparison procedure takes mode
> +	% in, in, out whereas historically this type of predicate is
> +

That comment is incomplete, so I will delete it.

> +:- func array__lookup(array(T), int) = T.
> +:- mode array__lookup(array_ui, in) = out is det.
> +
> +	% XXX rwab1: Is the above missing an in, in, in, out mode is det.
> +:- func array__set(array(T), int, T) = array(T).
> +:- mode array__set(array_di, in, in) = array_uo is det.

It's not clear what "the above" refers to here.
Perhaps you meant the predicate version of array__set?
If so, the answer is no, it is not missing an `in, in, in, out' mode --
that mode is deliberately not present, because it can't be implemented
efficiently (O(1)).  There's a separate predicate called `array__slow_set'
which does have that mode.

So I will delete that XXX comment.

> +:- func array__slow_set(array(T), int, T) = array(T).
> +:- mode array__slow_set(array_ui, in, in) = array_uo is det.

The function version of slow_set is missing the `in, in, in, array_uo' mode
which the predicate version has.  Is there any particular reason for that?
I'm assuming there's not, so I will add it.

Apart from those issues, this change looks fine, so I will make the changes
mentioned above and then I will go ahead and commit it.

Fergus Henderson <fjh at cs.mu.oz.au>  |  "I have always known that the pursuit
WWW: <http://www.cs.mu.oz.au/~fjh>  |  of excellence is a lethal habit"
PGP: finger fjh at        |     -- the last words of T. S. Garp.
mercury-developers mailing list
Post messages to:       mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions:          mercury-developers-request at cs.mu.oz.au

More information about the developers mailing list