<div dir="ltr">Hi Samuel:<div><br></div><div>You are correct that the lazy construction of the tuple is crucial in tying-the-monadic-knot. However, the point about making the BTree constructors strict is still interesting, as it pertains to delayed use of recursive values, rather than how they are represented/stored. The situation is really no different than a regular recursive let-expression in a non-monadic context.</div><div><br></div><div>Of course, it would still be fine to update the text to make that point clear like you suggested, should you be so inclined!</div><div><br></div><div>-Levent.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Oct 18, 2015 at 7:40 AM, Samuel Rødal <span dir="ltr"><<a href="mailto:srodal@gmail.com" target="_blank">srodal@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br>
<br>
the MonadFix wiki at <a href="https://wiki.haskell.org/MonadFix" rel="noreferrer" target="_blank">https://wiki.haskell.org/MonadFix</a> has a statement<br>
that I feel is a bit misleading.<br>
<br>
In section "2.2 Lazy algorithm interleaved with effects", it claims<br>
that making the BTree data structure strict doesn't cause endless<br>
recursion.<br>
<br>
Well, that's true, but that's just because rep_x_sum returns a tuple<br>
containing the BTree and the summed values of the current subtree, and<br>
the tuple is lazily constructed - postponing the construction of the<br>
tree value. So highlighting the fact that the function still works<br>
when the BTree structure is made strict is kind of a red herring.<br>
<br>
Maybe the confusion could be avoided by removing the part about making<br>
BTree strict, or adding a note about the tuple still ensuring lazy<br>
construction?<br>
<br>
--<br>
Samuel<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
</blockquote></div><br></div>