<div dir="ltr">Documenting something as fundamental as the selection algorithm used deep in compiler internals or on an ephemeral construct like a mailing list seems a bit whimsical.  Does this not belong in the reference manual under the modes chapter?</div><div class="gmail_extra"><br><div class="gmail_quote">On 16 October 2014 09:33, Julien Fischer <span dir="ltr"><<a href="mailto:jfischer@opturion.com" target="_blank">jfischer@opturion.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
On Thu, 16 Oct 2014, Paul Bone wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
This question came up on IRC today.  Consider append/3:<br>
<br>
   :- pred append(list(T), list(T), list(T)).<br>
   :- mode append(in, in, out) is det.<br>
   :- mode append(out, out, in) is multi.<br>
<br>
And a call to append with each of it's arguments fully instantiated.<br>
<br>
   % I've written these out so that I can name them and refer to them<br>
   % below.<br>
   A = [1, 2],<br>
   B = [3],<br>
   C = [1, 2, 3],<br>
   append(A, B, C).<br>
<br>
This is a case where "append(in, in, in) is semidet" is an implied mode.<br>
While it makes no (declarative semantics) difference, which mode of append<br>
will be used here?  Does the compiler select the first mode that fits or the<br>
"best" mode?<br>
<br>
A follow up question.  What if the implied mode is written down in the<br>
declaration.<br>
</blockquote>
<br></span>
See the comment above the predicate choose_best_match/8 in<br>
compiler/modecheck_call.m.  It describes the selection algorithm used.<br>
Or indeed just see the mailing list archives, as this question has<br>
been asked (and answered!) before.<br>
<br>
Cheers,<br>
Julien.<div class="HOEnZb"><div class="h5"><br>
______________________________<u></u>_________________<br>
users mailing list<br>
<a href="mailto:users@lists.mercurylang.org" target="_blank">users@lists.mercurylang.org</a><br>
<a href="https://www.mercurylang.org/lists/listinfo/users" target="_blank">https://www.mercurylang.org/<u></u>lists/listinfo/users</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>"Perhaps people don't believe this, but throughout all of the discussions of entering China our focus has really been what's best for the Chinese people. It's not been about our revenue or profit or whatnot."<br>--Sergey Brin, demonstrating the emptiness of the "don't be evil" mantra.
</div>