equivalent of EXPLAIN PLAN with GHC?

Joshua Haberman joshua at reverberate.org
Mon Aug 3 03:05:20 EDT 2009


Don Stewart <dons <at> galois.com> writes:
> joshua:
> > Is there any kind of intermediate form that a person can examine to see
> > how their code is being optimized?  Anything like EXPLAIN PLAN in SQL?
> > It would make it much easier to understand the kinds of optimizations
> > Haskell can perform.
> > 
> > I'm not looking so much for profiling -- obvious this program is trivial
> > and takes no time.  I just want to better understand what kind of
> > optimizations are possible given Haskell's language model.
> > 
> 
> So the optimization you're looking for here is fusion of some kind.
> GHC ships with build/foldr fusion, and there are libraries for an
> alternative system, stream fusion. 
> 
> GHC uses an intermediate representation called 'Core', which is a
> mini-Haskell, essentially, that is optimized repeatedly via
> type-preserving transformations. You can inspect this with a number of
> tools, including "ghc-core" (available on Hackage).

Excellent Don, thanks a lot for taking the time to spell this
out for me.  I don't understand it all yet, but I know what to
dig into next time I want to observe the compiler's behavior.

Josh



More information about the Glasgow-haskell-users mailing list