[英]Formatting GHC core?
當使用-ddump-simpl
運行 GHC 時,我得到.dump-simpl
文件,這些文件的格式很難閱讀。
示例片段:
{ (# ipv_aAYC, ipv1_aAYD #) ->
(# ipv_aAYC
`cast` ((GHC.Prim.State#
(Lamdu.Calc.Infer.R:WorldSTInfer[0]
<GHC.Prim.RealWorld>_N ; (Control.Monad.ST.Class.D:R:Worldt[0]
<ReaderT
(InferEnv
(STVar GHC.Prim.RealWorld),
STRef
GHC.Prim.RealWorld
Lamdu.Calc.Infer.QVarGen)>_N
<MaybeT
(GHC.ST.ST
GHC.Prim.RealWorld)>_N ; (Control.Monad.ST.Class.D:R:Worldt[0]
<MaybeT>_N
<GHC.ST.ST
GHC.Prim.RealWorld>_N ; Control.Monad.ST.Class.D:R:WorldST[0]
(Nth:0
(Nth:2
(Nth:3
(Nth:3
(<(InferEnv
(STVar
GHC.Prim.RealWorld),
STRef
GHC.Prim.RealWorld
Lamdu.Calc.Infer.QVarGen)>_R
->_R Sym (GHC.ST.N:ST[0]
<GHC.Prim.RealWorld>_N
<Maybe
(STVar
(World
(STInfer
GHC.Prim.RealWorld))
('Knot
T.Type))>_R) ; Sym (Control.Monad.Trans.Maybe.N:MaybeT[0]
<GHC.ST.ST
GHC.Prim.RealWorld>_R
(Lamdu.Calc.Infer.D:R:UVarSTInfer[0]
(Sym (Control.Monad.ST.Class.D:R:WorldST[0]
<GHC.Prim.RealWorld>_N) ; (Sym (Control.Monad.ST.Class.D:R:Worldt[0]
<MaybeT>_N
<GHC.ST.ST
GHC.Prim.RealWorld>_N) ; (Sym (Control.Monad.ST.Class.D:R:Worldt[0]
<ReaderT
(InferEnv
(STVar
GHC.Prim.RealWorld),
STRef
GHC.Prim.RealWorld
Lamdu.Calc.Infer.QVarGen)>_N
<MaybeT
(GHC.ST.ST
GHC.Prim.RealWorld)>_N) ; Sym (Lamdu.Calc.Infer.R:WorldSTInfer[0]
<GHC.Prim.RealWorld>_N)))) <'Knot
T.Type>_N))) ; (Control.Monad.Trans.Maybe.N:MaybeT[0]
<GHC.ST.ST
GHC.Prim.RealWorld>_R
<Tree
(UVar
(STInfer
GHC.Prim.RealWorld))
T.Type>_N ; GHC.ST.N:ST[0]
<GHC.Prim.RealWorld>_N
<Maybe
(Tree
(UVar
(STInfer
GHC.Prim.RealWorld))
T.Type)>_R)))))))))_R
:: GHC.Prim.State# (World (STInfer GHC.Prim.RealWorld))
~R# GHC.Prim.State# GHC.Prim.RealWorld),
代碼在哪里? 大多數情況下需要向右滾動很多才能看到,並且主要是每行一個單詞的類型注釋。 很難遵循,我想知道事情是否會更好。
我嘗試使用hindent
、 brittany
和hindent
stylish-haskell
來格式化文件(它基本上是 Haskell 的一個變體,不是嗎?)但沒有一個支持它..
我還看到了應該產生可讀輸出的ghc-core
工具,但我沒有弄清楚如何在基於堆棧的項目中使用它(它包裝了系統 GHC?)。
關於如何使核心更具可讀性的任何建議?
您正在尋找這些選項。 具體來說,您需要-dsuppress-coercions
,它應該將巨大的`cast` ...
縮小為類似`cast` <Co:5>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.