簡體   English   中英

格式化GHC核心?

[英]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),

代碼在哪里? 大多數情況下需要向右滾動很多才能看到,並且主要是每行一個單詞的類型注釋。 很難遵循,我想知道事情是否會更好。

我嘗試使用hindentbrittanyhindent stylish-haskell來格式化文件(它基本上是 Haskell 的一個變體,不是嗎?)但沒有一個支持它..

我還看到了應該產生可讀輸出的ghc-core工具,但我沒有弄清楚如何在基於堆棧的項目中使用它(它包裝了系統 GHC?)。

關於如何使核心更具可讀性的任何建議?

您正在尋找這些選項 具體來說,您需要-dsuppress-coercions ,它應該將巨大的`cast` ...縮小為類似`cast` <Co:5>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM