Hello Bulat,<br><div><br>You are indeed correct. However I fail to see how there is any undecideability.&nbsp; If instead one specified it as follows, it would be fine:<br><br>class Locatable a b | a -&gt; b, b -&gt; a where<br>
&nbsp;&nbsp; value :: a -&gt; b
<br>&nbsp;&nbsp; wrap :: b -&gt; a<br><br>instance Locatatable (Located a) a where</div><div><span class="q"><br>&nbsp;&nbsp; value (L a) = a<br>&nbsp;&nbsp; wrap a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = L a<br><br></span></div><div>It compiles fine, yet this is semantically the same.
</div><div><span class="e" id="q_10bad9ff7578dc6f_3"><br><br><br><br><div><span class="gmail_quote">
On 6/7/06, <b class="gmail_sendername">Bulat Ziganshin</b> &lt;<a href="mailto:bulat.ziganshin@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">bulat.ziganshin@gmail.com</a>&gt; wrote:</span>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hello Christophe,<br><br>Wednesday, June 7, 2006, 12:27:22 PM, you wrote:<br><br>&gt; global instance of a typeclass (so there is no overlapping), GHC will<br>&gt; still complain about overlapping. Is there any reason this is so or is
<br><br>GHC compains here about undecidability, not overlapping :)<br><br>&gt; -- Illegal instance declaration for `Locatable a'<br>&gt; -- (There must be at least one non-type-variable in the instance head<br>&gt; -- Use -fallow-undecidable-instances to permit this)
<br>&gt; -- In the instance declaration for `Locatable a'<br><br>&gt; Christophe(vincenz)<br><br><br><br><br>--<br>Best regards,<br> Bulat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mailto:<a href="mailto:Bulat.Ziganshin@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
Bulat.Ziganshin@gmail.com
</a><br><br></blockquote></div><br>

</span></div>