<div dir="ltr"><div><div>Well, it won't work.  Oh, it will compile and you can run it too (stuck in a infinte loop if you try to force it in any way).   Compilation happens because this satisfies the type solver.  However, the compiler cannot ensure non-termination of said program.  Just unrolling it should show you what's wrong with it.<br><br></div><div>Unroll once:<br><br></div>oddsForm3 = map (+2) (map (+2) oddsForm3)<br><br>Unroll again:<br><br>oddsForm3 = map (+2) (map (+2) (map (+2) oddsForm3)<br><br></div>And you can keep on going.  It will never evaluate to a terminal value.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Aug 17, 2015 at 11:55 AM, Debdut Karmakar <span dir="ltr"><<a href="mailto:debdutk@gnulinuxed.tk" target="_blank">debdutk@gnulinuxed.tk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><u></u>
<div>
<p>I am a haskell beginner and wondering how the following function works (in procedure) :</p>
<p><br>oddsFrom3 :: [Integer]<br> oddsFrom3 = map (+2) oddsFrom3</p>
<p><br>Thanks for your help.</p>
</div>
<br>_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
<br></blockquote></div><br></div>