<br clear="all"><div>Hi cafe,</div><div>     I have played quite a bit with the ConstraintKinds extension, pretty cool.</div><div>     But I found a problem which I thought would be made better, plz correct me if I am wrong</div>
<div>     </div><div>     take a contrived example,      </div><div>     class C B =&gt; B a where </div><div>     here B :: * -&gt; Constraint,  I think this definition is reasonable, since B does not appears in the </div>
<div>     first position of the context.</div><div>   </div><div>     Previously, we require acyclic class declarations since we don&#39;t have ConstraintKinds extension</div><div>     but now since type class could be abstracted, I think the definition above should be ok.</div>
<div>      </div><div>     the ghc-manual cited the program below is valid</div><div><span class="Apple-style-span" style="color: rgb(128, 0, 0); font-family: monospace; white-space: pre; background-color: rgb(255, 255, 255); font-size: medium; "> class C a where {</span></div>
<span class="Apple-style-span" style="font-family: sans-serif; background-color: rgb(255, 255, 255); font-size: medium; "><pre class="programlisting" style="font-family: monospace; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; padding-top: 0.3em; padding-right: 0.3em; padding-bottom: 0.3em; padding-left: 0.3em; color: maroon; ">
    op :: D b =&gt; a -&gt; b -&gt; b
  }
 </pre></span><div><span class="Apple-style-span" style="color: rgb(128, 0, 0); font-family: monospace; white-space: pre; background-color: rgb(255, 255, 255); font-size: medium; ">  class C a =&gt; D a where { ... }</span></div>
<div><span class="Apple-style-span" style="font-family: monospace; white-space: pre; background-color: rgb(255, 255, 255); "><font class="Apple-style-span" color="#333333"><br></font></span></div><div><span class="Apple-style-span" style="font-family: monospace; white-space: pre; background-color: rgb(255, 255, 255); "><font class="Apple-style-span" color="#333333">  I think there are no reasons to reject </font></span></div>
<div><span class="Apple-style-span" style="font-family: monospace; white-space: pre; background-color: rgb(255, 255, 255); "><font class="Apple-style-span" color="#333333">  class C B =&gt; B where (and this style is pretty useful in some cases)</font></span></div>
<div><span class="Apple-style-span" style="font-family: monospace; white-space: pre; background-color: rgb(255, 255, 255); "><font class="Apple-style-span" color="#333333">     ...</font></span></div><div><span class="Apple-style-span" style="font-family: monospace; white-space: pre; background-color: rgb(255, 255, 255); "><font class="Apple-style-span" color="#333333">  B :: * -&gt; Constraint</font></span></div>
<div><span class="Apple-style-span" style="font-family: monospace; white-space: pre; background-color: rgb(255, 255, 255); "><font class="Apple-style-span" color="#333333">  C :: (*-&gt;Constraint) -&gt; Constraint</font></span></div>
<div><span class="Apple-style-span" style="font-family: monospace; white-space: pre; background-color: rgb(255, 255, 255); "><font class="Apple-style-span" color="#333333"><br></font></span></div><div><span class="Apple-style-span" style="font-family: monospace; white-space: pre; background-color: rgb(255, 255, 255); "><font class="Apple-style-span" color="#333333">  Any comments are welcome</font></span></div>
<div> </div><div>     </div>-- <br>Best, bob<br>