При запуске GHC с -ddump-simpl
я получаю .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
и stylish-haskell
для форматирования файла (это в основном вариант Haskell, не так ли?), Но никто из них не поддерживает это.
Я также видел инструмент ghc-core
, который должен давать читабельный вывод, но я не смог понять, как использовать его в стековом проекте (он обертывает систему GHC?).
Какой-нибудь совет, как сделать ядро более читабельным?