On 11/1/06, <b class="gmail_sendername">Ross Paterson</b> &lt;<a href="mailto:ross@soi.city.ac.uk">ross@soi.city.ac.uk</a>&gt; wrote:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Wed, Nov 01, 2006 at 12:30:31PM -0600, Brian Smith wrote:<br>In response to your point about duplicate derived instances, yes, it<br>would make derived instances different from explicit ones, but as I've<br>argued before, I think it's unavoidable:
<br><br><a href="http://www.haskell.org/pipermail/haskell-prime/2006-October/thread.html#1739">http://www.haskell.org/pipermail/haskell-prime/2006-October/thread.html#1739</a><br><br>If you accept that this is the primary use of the standalone feature,
<br>such conflicts will happen all the time.</blockquote><div><br>How an instance is defined (explicitly or derived) should have nothing to do with how it is imported/exported in a module. <br><br>In particular, I think having features like :
<br>&nbsp;&nbsp;&nbsp;&nbsp; import M1 hiding (instance C T)<br>and<br>&nbsp;&nbsp;&nbsp; module M hiding (instance C T)<br>would eliminate the need for special-case handling of derived instances (if two imported modules happen to derive the same instances, you can just hide the instances from one of them). Instance hiding is an important feature in its own right.
<br><br>- Brian<br><br></div></div>