How to dump GHC simplifier output in human-readable form?
command-line, ghc, haskell
Solution
You're in luck! There is a tool for the job: ghc-core.
ghc-core wraps ghc with a command line wrapper that displays GHC's optimised core and assembly output in a human readable, colourised manner, in a pager.
Usage - just replace `ghc` with `ghc-core`:
ghc-core A.hs
ghc-core -fvia-C -optc-O3 A.hs
Problem
I have the following program: ``` data Peano = Zero | Succ Peano deriving (Show) add Zero b = b add (Succ a) b = add a (Succ b) mul Zero b = Zero mul (Succ a) b = add b (mul a b) four x = let two = Succ (Succ Zero) in mul two two ``` I want to get something like this from GHC: ``` add = \ ds b -> case ds of Zero -> b Succ a -> add a (Succ b) mul = \ ds b -> case ds of Zero -> Zero Succ a -> add b (mul a b) four = let two = Succ (Succ Zero) in mul two two ``` The best I managed to get is ``` ghci -ddump-simpl -dsuppress-module-prefixes -dsuppress-uniques foo.hs ``` but it steel required a lot of manual removal of GHC generated stuff to get the code above. Is there a switch for GHC or a third party script that does the cleanup? Is there a way at least to get rid of `case {tick (main:Main, 8)} @ (State# RealWorld) of _ { __DEFAULT ->`?