<div dir="ltr"><br><br><div class="gmail_quote">On Tue, Sep 2, 2008 at 5:33 PM, Ryan Ingram <span dir="ltr">&lt;<a href="mailto:ryani.spam@gmail.com">ryani.spam@gmail.com</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;">
ghci has some crazy defaulting rules for expressions at the top level.<br>
<br>
In particular, it tries to unify those expressions with a few<br>
different types, including IO.<br>
<br>
On the other hand, the let-expression is typed like regular Haskell<br>
and you run into the monomorphism restriction.</blockquote><div><br>Right.&nbsp; Just to make it clear for the original poster, this monomorphism restriction is not about GHCi specifically, just GHC in general.&nbsp; With the -fno-monomorphism-restriction, you will not get this error.<br>
<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<font color="#888888"><br>
 &nbsp;-- ryan<br>
</font><div><div></div><div class="Wj3C7c"><br>
On Tue, Sep 2, 2008 at 1:25 PM, Henry Laxen &lt;<a href="mailto:nadine.and.henry@pobox.com">nadine.and.henry@pobox.com</a>&gt; wrote:<br>
&gt; Dear Group,<br>
&gt;<br>
&gt; When I fire up ghci and define:<br>
&gt;<br>
&gt; increment x = return (x+1)<br>
&gt;<br>
&gt; I can say:<br>
&gt; Main&gt; increment 1<br>
&gt;<br>
&gt; and ghci dutifully replies 2. Also as expected, the type signature of<br>
&gt; increment is: &nbsp;(Num a, Monad m) =&gt; a -&gt; m a<br>
&gt;<br>
&gt; However, if I say:<br>
&gt;<br>
&gt; Main&gt; let a = increment 1<br>
&gt;<br>
&gt; I get:<br>
&gt;<br>
&gt; &lt;interactive&gt;:1:8:<br>
&gt; &nbsp; &nbsp;Ambiguous type variable `m&#39; in the constraint:<br>
&gt; &nbsp; &nbsp; &nbsp;`Monad m&#39; arising from a use of `increment&#39; at &lt;interactive&gt;:1:8-18<br>
&gt; &nbsp; &nbsp;Probable fix: add a type signature that fixes these type variable(s)<br>
&gt;<br>
&gt;<br>
&gt; Have I, like Monsier Jourdain, been running in the IO monad all my<br>
&gt; life, and didn&#39;t even know it?<br>
&gt;<br>
&gt; Thanks,<br>
&gt; Henry Laxen<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Haskell-Cafe mailing list<br>
&gt; <a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
&gt; <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
&gt;<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>