2012-05-21 3 views
10

私は、次のプログラムがあります。私はGHCからこのような何かを取得したい人間が読める形式で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 

を:

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 

ですが、それはスチール必要上記のコードを得るために、GHCを手動でたくさん削除しています。クリーンアップを行うGHCやサードパーティスクリプト用のスイッチはありますか?

少なくともcase {tick (main:Main, 8)} @ (State# RealWorld) of _ { __DEFAULT ->を取り除く方法はありますか?

+0

を 'tick'注釈はそれがそれらを取り除く必要があります無効にする、HPCによって生成され、私は思います。 –

+0

どのようにわからないのですか?私はそれをオンにしなかった - コマンドラインを参照してください。 – nponeccop

答えて

17

あなたは幸運です!仕事のためのツール:ghc-coreがあります。

ghc-coreは、GHCの最適化されたコアとアセンブリの出力を、人間が判読可能な色付きの方法でポケットベルに表示するコマンドラインラッパーでghcをラップします。

使い方 - ちょうどghc-coreghcを置き換える:

  ghc-core A.hs 

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

(これはこれよりも読みやすくするつもりはないと思いますが、 'ghc-core'に' cabal install ghc-core'をインストールしてください) –

+0

[screenshot](http://galois.com/ 〜dons/images/ghc-core.png)リンクが壊れています。 – pat

+0

残念ながら、私はそれについて多くを行うことはできません。 –

関連する問題