<div dir="ltr">I've created a ticket for this at: <a href="https://ghc.haskell.org/trac/ghc/ticket/13663">https://ghc.haskell.org/trac/ghc/ticket/13663</a></div><div class="gmail_extra"><br><div class="gmail_quote">On 8 May 2017 at 16:12, Ben Gamari <span dir="ltr"><<a href="mailto:ben@smart-cactus.org" target="_blank">ben@smart-cactus.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Christiaan Baaij <<a href="mailto:christiaan.baaij@gmail.com">christiaan.baaij@gmail.com</a>> writes:<br>
<br>
> Hello GHC Devs,<br>
><br>
Hi!<br>
<span class=""><br>
> So my question are:<br>
> - Which part of the simplifier is turning these local recursive let-binders<br>
> into global recursive functions?<br>
<br>
</span>The simplifier does a bit of let floating. See Simplify.simplLazyBind<br>
and SimplEnv.doFloatFromRhs. I suspect this is what you are seeing.<br>
<span class=""><br>
> - Is there some way to disable this transformation?<br>
<br>
</span>You could try adding a flag which is checked by doFloatFromRhs. I'm not<br>
sure what, if anything, might break if you do so.<br>
<br>
Cheers,<br>
<br>
- Ben<br>
</blockquote></div><br></div>