<div class="gmail_quote">On Tue, Jun 21, 2011 at 2:24 PM, pipoca <span dir="ltr">&lt;<a href="mailto:eliyahu.ben.miney@gmail.com">eliyahu.ben.miney@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
On Jun 21, 4:57 pm, Alexey Khudyakov &lt;<a href="mailto:alexey.sklad...@gmail.com">alexey.sklad...@gmail.com</a>&gt;<br>
wrote:<br>
<div class="im">&gt; Types may be same.<br>
&gt;<br>
&gt; oops :: Int :+: Int -&gt; Int<br>
&gt; oops &lt;Int i&gt; = mmm which one?<br>
<br>
</div>If you were to have your anonymous sum types be a union instead of the<br>
disjoint union, then you could say that A :+: A has no meaning.<br></blockquote><div><br></div><div>That sort of union would not be parametric, and would play havoc with generic programming.</div><div><br></div><div>E.g. consider taking a list [(t,Int)] and [(t,a)] and generating a list of [(t,Int :+: a)], then processing this with a function of the form Int -&gt; Bool.</div>
<div><br></div><div><br></div><div><br></div><div><br></div></div>