Haskell 如何以人类可读的形式转储GHC简化器输出?

Haskell 如何以人类可读的形式转储GHC简化器输出?,haskell,command-line,ghc,Haskell,Command Line,Ghc,我有以下计划: 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 我想从GHC得到这样的东西: add = \ ds b ->

我有以下计划:

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
我想从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
我能做到的最好的就是

ghci -ddump-simpl -dsuppress-module-prefixes -dsuppress-uniques foo.hs
但it钢铁公司需要大量手动删除GHC生成的内容才能获得上述代码。是否有用于GHC的开关或执行清理的第三方脚本


至少有没有办法摆脱{u_____________默认值->的{code>case{tick(main:main,8)}@(State_#RealWorld)?

你很幸运!这项工作有一个工具:

ghc core使用命令行包装器包装ghc,该包装器以可读、彩色的方式在寻呼机中显示ghc优化的core和程序集输出

用法-只需将
ghc
替换为
ghc内核

   ghc-core A.hs  

   ghc-core -fvia-C -optc-O3 A.hs

(也就是说,你不会让它比这更可读。另外,用
cabal安装ghc core
安装
ghc core
)不幸的是,我对此无能为力。如果我用cabal构建我的程序怎么办?我还能用ghc内核吗?我想现在应该是ghc内核--optc-O3 A.hs。@JanStolarek
cabal exec ghc core Path/To/Module.hs
勾号注释是由HPC生成的,所以禁用它应该可以消除错误m、 我想。我不知道怎么做。我没有打开它-请参阅命令行。