<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 -> a, t -> b, s b -> t, t a -> 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 't' 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"><<a href="mailto:ian@well-typed.com" target="_blank">ian@well-typed.com</a>></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>
><br>
> I have dozens of classes of forms like<br>
><br>
> class Wrapped s t a b | a -> s, b -> t, a t -> s, b s -> t<br>
<br>
</div>Isn't this equivalent to just<br>
<div class="im"><br>
class Wrapped s t a b | a -> s, b -> t<br>
<br>
</div>?<br>
<br>
<br>
Thanks<br>
<span class="HOEnZb"><font color="#888888">Ian<br>
<br>
</font></span></blockquote></div><br></div>