<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body ><div>While X = map.init could be a reference to either the function</div><div>or the predicate version of map.init, map.init(X) can only be a reference</div><div>to the predicate version. In many cases, this technique will avoid</div><div>ambiguity with shorter code than using explicit type qualification.</div><div><br></div><div>Zoltan.</div><br><br>-------- Original message --------<br>From: Dirk Ziegemeyer <dirk@ziegemeyer.de> <br>Date:2016/07/19  2:14 PM  (GMT+01:00) <br>To: Mark Brown <mark@mercurylang.org> <br>Cc: Mercury Users <users@lists.mercurylang.org> <br>Subject: Re: [m-users.] How to avoid warning about highly ambiguous         overloading <br><br>Hi Mark,<br><br>>> I create several emtpy maps with the function map.init/0 and mercury warns me about highly ambiguous overloading.<br>> <br>> Note that this can occur as a consequence of other errors, so it can<br>> help to fix any other errors first before tackling the ambiguous<br>> overloading.<br>> <br>>> Can I use explicit type qualification to tell Mercury that I mean the function map.init/0 instead of the predicate map.init/1?<br>> <br>> Yes. If you want map.init to mean the function which returns, say,<br>> map(a, b), then write<br>> <br>>    map.init : map(a, b)<br><br>Thank you for helping me with the syntax of explicit type qualification. This works perfectly.<br><br>Dirk<br>_______________________________________________<br>users mailing list<br>users@lists.mercurylang.org<br>https://lists.mercurylang.org/listinfo/users<br></body>