I don&#39;t think anyone has proposed weakening parametricity in this way.<div><br></div><div>You&#39;d definitely still need</div><div><br></div><div>f :: (Typeable a, Typeable b) =&gt; a -&gt; Maybe b</div><div><br></div>
<div>to make that function work.</div><div><br></div><div>The proposal is just to make the instances available for any concrete type so you don&#39;t have to write them (and therefore can&#39;t screw them up or do hinky things with them.)</div>
<div><br></div><div>-Edward</div><div><br><div class="gmail_quote">On Wed, Oct 3, 2012 at 9:12 AM, Ian Lynagh <span dir="ltr">&lt;<a href="mailto:igloo@earth.li" target="_blank">igloo@earth.li</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On Wed, Oct 03, 2012 at 12:01:15PM +0000, Simon Peyton-Jones wrote:<br>
&gt;<br>
&gt; * If we do make Typeable instances by default, there are two paths<br>
&gt;    Plan A (easy): make GHC derive Typeable for everything, deprecate<br>
&gt;             all uses of &#39;deriving Typeable&#39;.  Small downside: some programs<br>
&gt;             that are currently rejected will be accepted.<br>
<br>
</div>Do you literally mean &quot;derive Typeable for everything&quot;, or do you mean<br>
that Typeable would be available for all types, similar to how seq is?<br>
<br>
i.e. would this be valid, or would it complain that it cannot infer<br>
(Typeable a, Typeable b)?:<br>
<br>
    f :: a -&gt; Maybe b<br>
    f = Data.Typeable.cast<br>
<br>
<br>
Thanks<br>
<span class="HOEnZb"><font color="#888888">Ian<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org">Libraries@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/libraries" target="_blank">http://www.haskell.org/mailman/listinfo/libraries</a><br>
</div></div></blockquote></div><br></div>