GHC API user: How to stop simplifier from turning recursive let-bindings into mutually recursive functions

Christiaan Baaij christiaan.baaij at gmail.com
Mon May 8 14:17:36 UTC 2017


I've created a ticket for this at:
https://ghc.haskell.org/trac/ghc/ticket/13663

On 8 May 2017 at 16:12, Ben Gamari <ben at smart-cactus.org> wrote:

> Christiaan Baaij <christiaan.baaij at gmail.com> writes:
>
> > Hello GHC Devs,
> >
> Hi!
>
> > So my question are:
> > - Which part of the simplifier is turning these local recursive
> let-binders
> > into global recursive functions?
>
> The simplifier does a bit of let floating. See Simplify.simplLazyBind
> and SimplEnv.doFloatFromRhs. I suspect this is what you are seeing.
>
> > - Is there some way to disable this transformation?
>
> You could try adding a flag which is checked by doFloatFromRhs. I'm not
> sure what, if anything, might break if you do so.
>
> Cheers,
>
> - Ben
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20170508/25e2691a/attachment.html>


More information about the ghc-devs mailing list