<div>Hi Stephen,</div><div>I&#39;ve have done the following:</div><div><br></div><div><div>{-# LANGUAGE ScopedTypeVariables #-}</div><div>{-# LANGUAGE RankNTypes #-}</div></div><div>...</div><div>mbc :: forall a . (SubUnit a)=&gt;[Point] -&gt; SetActiveSubUnits a -&gt; Box -&gt; StateMBC a [Unit a]</div>
<div>mbc p afl box = do</div><div>    cleanAFLs</div><div>    if (null afl)</div><div>        then do</div><div>            (unit, afl&#39;) &lt;- case build1stUnit plane p1 p2 p of</div><div>                Just un  -&gt; return (([un], fromList $ getAllSubUnits un)::(SubUnit a)=&gt;([Unit a], SetActiveSubUnits a))</div>
<div>                _        -&gt; return ([]   , empty)</div><div>            analyze1stUnit unit afl&#39;</div><div>.....</div><div><br></div><div><br></div>I hope that is right. Does it?<div><br></div><div>Edgar</div>
<div><br></div><div><br></div><div><br><div><br></div><div><br><div class="gmail_quote">On 26 March 2011 21:19, Stephen Tetley <span dir="ltr">&lt;<a href="mailto:stephen.tetley@gmail.com">stephen.tetley@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;">Hi Edgar<br>
<br>
What did you try?<br>
<br>
My intuition is that this specific bit (there may be other problems)<br>
is because the type checker is introducing a new type variable. Thus<br>
you don&#39;t actually want the type operator (~) to say the new type<br>
variable is equal to the type variable in the function signature, you<br>
want to use scoped type variables so that the local type annotation is<br>
*the same type* type variable.<br>
<br>
Best wishes<br>
<font color="#888888"><br>
Stephen<br>
</font><div><div></div><div class="h5"><br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
</div></div></blockquote></div><br></div></div>