I don&#39;t know, but:<br><br>number<br>-- definition<br>= do { num &lt;- natural ; return $ num }<br>-- desugar<br>= natural &gt;&gt;= \num -&gt; return $ num<br>-- apply ($)<br>= natural &gt;&gt;= \num -&gt; return num<br>
-- eta elimination (f == \x -&gt; f x)<br>= natural &gt;&gt;= return<br>-- monad law<br>= natural<br><br>(modulo monomorphism restriction, since number doesn&#39;t take any arguments and doesn&#39;t have a type signature)<br>
<br>  -- ryan<br><br><div class="gmail_quote">On Tue, Sep 29, 2009 at 12:54 AM, Anatoly Yakovenko <span dir="ltr">&lt;<a href="mailto:aeyakovenko@gmail.com">aeyakovenko@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;">
number = do { num &lt;- natural<br>
            ; return $ num<br>
            }<br>
main = do<br>
   txt &lt;- hGetContents stdin<br>
   print $ parse number &quot;stdin&quot; txt<br>
<br>
<br>
why doesn&#39;t that work?<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>
</blockquote></div><br>