<div dir="ltr"><div style>Er, what I meant was<br></div><div style><br></div><div style>class Foo s t a b | s -&gt; a, t -&gt; b, s b -&gt; t, t a -&gt; s</div><div style><br></div><div style>That is what I get for dashing it off off the cuff. =)</div>
<div style><br></div><div style>Then s determines some type argument for it, t determines its type argument, but Using s and the other type argument I can determine the whole containing type &#39;t&#39; and vice versa.</div>
<div style><br></div><div style>instance Foo (Identity a) (Identity b) a b</div><div style><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, May 1, 2013 at 7:02 AM, Ian Lynagh <span dir="ltr">&lt;<a href="mailto:ian@well-typed.com" target="_blank">ian@well-typed.com</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 Tue, Apr 30, 2013 at 11:35:10PM -0400, Edward Kmett wrote:<br>
&gt;<br>
&gt; I have dozens of classes of forms like<br>
&gt;<br>
&gt; class Wrapped s t a b | a -&gt; s, b -&gt; t, a t -&gt; s, b s -&gt; t<br>
<br>
</div>Isn&#39;t this equivalent to just<br>
<div class="im"><br>
    class Wrapped s t a b | a -&gt; s, b -&gt; t<br>
<br>
</div>?<br>
<br>
<br>
Thanks<br>
<span class="HOEnZb"><font color="#888888">Ian<br>
<br>
</font></span></blockquote></div><br></div>