Clear and concise answer.<br><br>Thank you.<br><br><div class="gmail_quote">On Thu, Apr 15, 2010 at 21:24, Daniel Fischer <span dir="ltr">&lt;<a href="mailto:daniel.is.fischer@web.de">daniel.is.fischer@web.de</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Am Donnerstag 15 April 2010 19:19:15 schrieb Romulus:<br>
&gt; Hello everyone,<br>
<div class="im">&gt;<br>
<br>
&gt;<br>
&gt; I&#39;m stuck with the definition of the helper for LAnd&#39;. I expect :<br>
&gt;<br>
&gt; land&#39; :: ((LAnd&#39; p) :&lt;: (f p)) =&gt;  Mu (f p) -&gt;  Mu (f p) -&gt;  Mu (f p)<br>
&gt; land&#39; = \x y -&gt; inject (LAnd&#39; x y)<br>
&gt;<br>
&gt; ... but ghci 6.10.4 does not really like this definition...<br>
&gt;<br>
&gt;     Could not deduce (LAnd&#39; p :&lt;: f p1)<br>
&gt;       from the context (LAnd&#39; p1 :&lt;: f p1)<br>
&gt;       arising from a use of `inject&#39; at PropSample.hs:128:16-33<br>
&gt;     Possible fix:<br>
&gt;       add (LAnd&#39; p :&lt;: f p1) to the context of<br>
&gt;         the type signature for `land&#39;&#39;<br>
&gt;       or add an instance declaration for (LAnd&#39; p :&lt;: f p1)<br>
&gt;     In the expression: inject (LAnd&#39; x y)<br>
&gt;     In the expression: \ x y -&gt; inject (LAnd&#39; x y)<br>
&gt;     In the definition of `land&#39;&#39;: land&#39; = \ x y -&gt; inject (LAnd&#39; x y)<br>
&gt; Failed, modules loaded: none.<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; Does anybody have a clue for this problem ?<br>
&gt; I don&#39;t really understand where is the trouble actually.<br>
<br>
</div>The expression (Land&#39; x y) can have the type (Land&#39; q (Mu (f p))) for all<br>
q. But there&#39;s only an instance for the p used in Mu (f p) provided, so<br>
<div class="im"><br>
     Could not deduce (LAnd&#39; p :&lt;: f p1)<br>
       from the context (LAnd&#39; p1 :&lt;: f p1)<br>
<br>
</div>The solution is to tell the compiler that this expression should have the<br>
type LAnd&#39; p (Mu (f p)) for the f and p from the type signature, add<br>
<br>
{-# LANGUAGE ScopedTypeVariables #-}<br>
<br>
and modify land&#39; to<br>
<br>
land&#39; :: forall f p. ((LAnd&#39; p) :&lt;: (f p)) =&gt;  Mu (f p) -&gt;  Mu (f p) -&gt;  Mu<br>
(f p)<br>
land&#39; = \x y -&gt; inject (LAnd&#39; x y :: LAnd&#39; p (Mu (f p)))<br>
<br>
to be greeted by<br>
<br>
<br>
[1 of 1] Compiling Prop             ( PropSample.hs, interpreted )<br>
<br>
PropSample.hs:31:16:<br>
    Warning: Declaration of `In&#39; uses deprecated syntax<br>
             Instead, use the form<br>
               In :: {out :: f (Mu f)} -&gt; Mu f<br>
Ok, modules loaded: Prop.<br>
*Prop&gt;<br>
<br>
by 6.12.1 and<br>
<br>
$ ghci-6.10.3 PropSample<br>
GHCi, version 6.10.3: <a href="http://www.haskell.org/ghc/" target="_blank">http://www.haskell.org/ghc/</a>  :? for help<br>
Loading package ghc-prim ... linking ... done.<br>
Loading package integer ... linking ... done.<br>
Loading package base ... linking ... done.<br>
[1 of 1] Compiling Prop             ( PropSample.hs, interpreted )<br>
Ok, modules loaded: Prop.<br>
*Prop&gt;<br>
<br>
from the older GHC.<br>
<div><div></div><div class="h5"><br>
&gt;<br>
&gt; Cheers,<br>
&gt;<br>
&gt; PS: haskellers rulez ;)<br>
<br>
+1<br>
<br>
&gt;<br>
&gt;<br>
&gt; [1]<br>
&gt; Swierstra, W.<br>
&gt; Data types à la carte<br>
&gt; J. Funct. Program.<br>
&gt; Cambridge University Press, 2008, 18, 423-436<br>
&gt;<br>
&gt; [2]<br>
&gt; Knowles, K.<br>
&gt; First-Order Logic à la Carte<br>
&gt; The Monad.Reader, 2008, issue 11<br>
<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Romuald THION<br>Docteur level 1.0 - Great master access control, +3 against half-dead<br>&quot;la vie, c&#39;est comme un jeu mal foutu dont on ne connait pas les règles et où il n&#39;y a pas de sauvegardes&quot;<br>

<br>