Tengo el siguiente programa:¿Cómo volcar salida del simplificador GHC en forma legible para humanos?
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
Quiero conseguir algo como esto desde 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
La mejor he conseguido es
ghci -ddump-simpl -dsuppress-module-prefixes -dsuppress-uniques foo.hs
pero el acero requerido mucha eliminación manual de material generado por GHC para obtener el código anterior. ¿Hay algún cambio para GHC o un script de terceros que realice la limpieza?
¿Hay una manera al menos para deshacerse de case {tick (main:Main, 8)} @ (State# RealWorld) of _ { __DEFAULT ->
?
El 'anotaciones tick' son generados por HPC, por lo que su desactivación debe deshacerse de ellos, creo. –
No sé cómo. No lo encendí, mira la línea de comando. – nponeccop