-
-
Save jkarni/828065f3f9fdfce998f91bc91b7b155e to your computer and use it in GitHub Desktop.
ghc-core for non-let-generalized non-firiing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
==================== Tidy Core ==================== | |
Result size of Tidy Core | |
= {terms: 186, types: 1,481, coercions: 3,686} | |
-- RHS size: {terms: 2, types: 0, coercions: 0} | |
$s$fShowBook'7 :: [Char] | |
[GblId, | |
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=False, ConLike=False, | |
WorkFree=False, Expandable=False, Guidance=IF_ARGS [] 40 0}] | |
$s$fShowBook'7 = unpackCString# "age"# | |
-- RHS size: {terms: 2, types: 0, coercions: 0} | |
$s$fShowBook'5 :: [Char] | |
[GblId, | |
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=False, ConLike=False, | |
WorkFree=False, Expandable=False, Guidance=IF_ARGS [] 40 0}] | |
$s$fShowBook'5 = unpackCString# "name"# | |
-- RHS size: {terms: 3, types: 1, coercions: 0} | |
$s$fShowBook'6 :: [Char] | |
[GblId, | |
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, | |
WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 30}] | |
$s$fShowBook'6 = | |
: | |
@ Char | |
Bookkeeper.Internal.Types.$fShowHelperBook'1 | |
$s$fShowBook'7 | |
-- RHS size: {terms: 3, types: 1, coercions: 0} | |
$s$fShowBook'4 :: [Char] | |
[GblId, | |
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, | |
WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 30}] | |
$s$fShowBook'4 = | |
: | |
@ Char | |
Bookkeeper.Internal.Types.$fShowHelperBook'1 | |
$s$fShowBook'5 | |
-- RHS size: {terms: 3, types: 2, coercions: 0} | |
$s$fShowBook'3 :: [Char] | |
[GblId, | |
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, | |
WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 30}] | |
$s$fShowBook'3 = | |
: @ Char shows6 ([] @ Char) | |
-- RHS size: {terms: 35, types: 191, coercions: 19} | |
$w$dShowHelper [InlPrag=[0]] | |
:: Book' Identity '["age" :=> Int, "name" :=> [Char]] | |
-> (# (String, String), [(String, String)] #) | |
[GblId, | |
Arity=1, | |
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, | |
WorkFree=True, Expandable=True, Guidance=IF_ARGS [20] 220 30}] | |
$w$dShowHelper = | |
\ (w_s5lE :: Book' Identity '["age" :=> Int, "name" :=> [Char]]) -> | |
case w_s5lE | |
of _ [Occ=Dead] | |
{ Bookkeeper.Internal.Types.BCons @ a0_a2QZ @ as0_a2R0 @ k10_a2R1 | |
cobox0_a2R2 v1_a2R3 rest_a2R4 -> | |
case v1_a2R3 `cast` ... of _ [Occ=Dead] { I# ww3_s5mu -> | |
case rest_a2R4 `cast` ... | |
of _ [Occ=Dead] | |
{ Bookkeeper.Internal.Types.BCons @ a1_s5mx @ as1_s5my @ k1_s5mz | |
cobox1_s5mA v2_s5mB rest1_s5mC -> | |
(# ($s$fShowBook'6, | |
++ | |
@ Char | |
Data.Functor.Identity.$fShowIdentity1 | |
(case $wshowSignedInt 11# ww3_s5mu ([] @ Char) | |
of _ [Occ=Dead] { (# ww5_a5kG, ww6_a5kH #) -> | |
: @ Char ww5_a5kG ww6_a5kH | |
})), | |
: | |
@ (String, String) | |
($s$fShowBook'4, | |
++ | |
@ Char | |
Data.Functor.Identity.$fShowIdentity1 | |
(: | |
@ Char | |
shows6 | |
(showLitString (v2_s5mB `cast` ...) $s$fShowBook'3))) | |
([] @ (String, String)) #) | |
} | |
} | |
} | |
-- RHS size: {terms: 8, types: 44, coercions: 0} | |
$s$fShowBook'2 [InlPrag=INLINE[0]] | |
:: Book' Identity '["age" :=> Int, "name" :=> [Char]] | |
-> [(String, String)] | |
[GblId, | |
Arity=1, | |
Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True, | |
WorkFree=True, Expandable=True, | |
Guidance=ALWAYS_IF(arity=1,unsat_ok=True,boring_ok=False) | |
Tmpl= \ (w_s5lE [Occ=Once] | |
:: Book' Identity '["age" :=> Int, "name" :=> [Char]]) -> | |
case $w$dShowHelper w_s5lE | |
of _ [Occ=Dead] { (# ww1_s5lK [Occ=Once], ww2_s5lL [Occ=Once] #) -> | |
: @ (String, String) ww1_s5lK ww2_s5lL | |
}}] | |
$s$fShowBook'2 = | |
\ (w_s5lE :: Book' Identity '["age" :=> Int, "name" :=> [Char]]) -> | |
case $w$dShowHelper w_s5lE | |
of _ [Occ=Dead] { (# ww1_s5lK, ww2_s5lL #) -> | |
: @ (String, String) ww1_s5lK ww2_s5lL | |
} | |
-- RHS size: {terms: 9, types: 88, coercions: 50} | |
$dSubset_r5nb | |
:: forall k1_a2RE (f_a2RF :: k1_a2RE -> Type). | |
Book' f_a2RF '["name" :=> [Char]] | |
-> Book' f_a2RF '["name" :=> [Char]] | |
$dSubset_r5nb = | |
\ (@ k1_a2RE) | |
(@ (f_a2RF :: k1_a2RE -> Type)) | |
(eta_a2RG :: Book' f_a2RF '["name" :=> [Char]]) -> | |
case eta_a2RG | |
of _ [Occ=Dead] | |
{ Bookkeeper.Internal.Types.BCons @ a0_a2RK @ as0_a2RL @ k20_a2RM | |
cobox1_a2RN value1_a2RO oldBook_a2RP -> | |
(Bookkeeper.Internal.Types.BCons | |
@ k1_a2RE | |
@ f_a2RF | |
@ '["name" :=> a0_a2RK] | |
@ a0_a2RK | |
@ '[] | |
@ "name" | |
@~ ... | |
value1_a2RO | |
(oldBook_a2RP `cast` ...)) | |
`cast` ... | |
} | |
-- RHS size: {terms: 1, types: 30, coercions: 12} | |
$d~_r5nc | |
:: ('["name" :=> [Char]] :: [*]) ~~ ('["name" :=> [Char]] :: [*]) | |
$d~_r5nc = | |
Eq# | |
@ [*] @ [*] @ '["name" :=> [Char]] @ '["name" :=> [Char]] @~ ... | |
-- RHS size: {terms: 3, types: 45, coercions: 50} | |
$dInsertable'_r5nd | |
:: forall (f_a2G6 :: * -> *). | |
Data.Proxy.Proxy 'GT | |
-> Key "name" | |
-> f_a2G6 [Char] | |
-> Book' f_a2G6 '["age" :=> Int, "name" :=> [Char]] | |
-> Book' f_a2G6 '["age" :=> Int, "name" :=> [Char]] | |
$dInsertable'_r5nd = | |
Bookkeeper.Internal.Types.$fInsertable'kOrderingGTkeyvalue::_$cinsert' | |
@ * | |
@ * | |
@ '["name" :=> [Char]] | |
@ "name" | |
@ [Char] | |
@ '["name" :=> [Char]] | |
@ "age" | |
@ Int | |
($d~_r5nc `cast` ...) | |
((Bookkeeper.Internal.Types.$fInsertablekkeyvalue:0_$cinsert | |
@ * @ * @ "name" @ [Char] @ [Char] @ '[]) | |
`cast` ...) | |
-- RHS size: {terms: 2, types: 0, coercions: 0} | |
$trModule2 :: TrName | |
[GblId, | |
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, | |
WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 30 20}] | |
$trModule2 = TrNameS "main"# | |
-- RHS size: {terms: 2, types: 0, coercions: 0} | |
$trModule1 :: TrName | |
[GblId, | |
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, | |
WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 30 20}] | |
$trModule1 = TrNameS "Main"# | |
-- RHS size: {terms: 3, types: 0, coercions: 0} | |
$trModule :: Module | |
[GblId, | |
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, | |
WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 30}] | |
$trModule = Module $trModule2 $trModule1 | |
-- RHS size: {terms: 2, types: 29, coercions: 26} | |
$dSubset1_r5ne | |
:: forall k_a2FE (f_a2FF :: k_a2FE -> Type). | |
Book' f_a2FF '["age" :=> Int, "name" :=> [Char]] | |
-> Book' f_a2FF '["name" :=> [Char]] | |
$dSubset1_r5ne = | |
Bookkeeper.Internal.Types.$fSubset:subset_$cgetSubset | |
@ '["name" :=> [Char]] | |
@ '["name" :=> [Char]] | |
@ ("age" :=> Int) | |
($dSubset_r5nb `cast` ...) | |
-- RHS size: {terms: 2, types: 21, coercions: 171} | |
$dInsertable_r5nf | |
:: forall (f_a2Jd :: * -> *). | |
Key "name" | |
-> f_a2Jd [Char] | |
-> Book' f_a2Jd '["age" :=> Int, "name" :=> [Char]] | |
-> Book' | |
f_a2Jd | |
(Bookkeeper.Internal.Types.Insert | |
"name" [Char] '["age" :=> Int, "name" :=> [Char]]) | |
$dInsertable_r5nf = | |
Bookkeeper.Internal.Types.$fInsertablekkeyvalue:_$cinsert | |
@ * | |
@ * | |
@ "name" | |
@ "age" | |
@ [Char] | |
@ Int | |
@ '["name" :=> [Char]] | |
($dInsertable'_r5nd `cast` ...) | |
-- RHS size: {terms: 2, types: 0, coercions: 0} | |
dt_r5ng :: Int | |
dt_r5ng = I# 0# | |
-- RHS size: {terms: 1, types: 5, coercions: 2} | |
dt1_r5nh :: Book' Identity '[] | |
dt1_r5nh = | |
Bookkeeper.Internal.Types.BNil @ * @ Identity @ '[] @~ ... | |
-- RHS size: {terms: 3, types: 20, coercions: 15} | |
dt2_r5ni :: Book' Identity '["name" :=> [Char]] | |
dt2_r5ni = | |
Bookkeeper.Internal.Types.BCons | |
@ * | |
@ Identity | |
@ '["name" :=> [Char]] | |
@ [Char] | |
@ '[] | |
@ "name" | |
@~ ... | |
(([] @ Char) `cast` ...) | |
dt1_r5nh | |
-- RHS size: {terms: 3, types: 37, coercions: 23} | |
pb_r5nj :: Book' Identity '["age" :=> Int, "name" :=> [Char]] | |
pb_r5nj = | |
Bookkeeper.Internal.Types.BCons | |
@ * | |
@ Identity | |
@ '["age" :=> Int, "name" :=> [Char]] | |
@ Int | |
@ '["name" :=> [Char]] | |
@ "age" | |
@~ ... | |
(dt_r5ng `cast` ...) | |
dt2_r5ni | |
-- RHS size: {terms: 3, types: 52, coercions: 60} | |
lvl2_r5nk | |
:: (Gettable "name" '["age" :=> Int, "name" :=> [Char]] [Char], | |
Bookkeeper.Internal.Types.Insertable | |
"name" [Char] '["age" :=> Int, "name" :=> [Char]]) | |
lvl2_r5nk = | |
($dSubset1_r5ne `cast` ..., $dInsertable_r5nf `cast` ...) | |
-- RHS size: {terms: 2, types: 0, coercions: 0} | |
lvl3_r5nl :: Char | |
lvl3_r5nl = C# 'c'# | |
-- RHS size: {terms: 2, types: 1, coercions: 0} | |
lvl4_r5nm :: [Char] -> [Char] | |
lvl4_r5nm = : @ Char lvl3_r5nl | |
-- RHS size: {terms: 2, types: 0, coercions: 0} | |
lvl5_r5nn :: Char | |
lvl5_r5nn = C# 'a'# | |
-- RHS size: {terms: 2, types: 1, coercions: 0} | |
lvl6_r5no :: [Char] -> [Char] | |
lvl6_r5no = : @ Char lvl5_r5nn | |
-- RHS size: {terms: 5, types: 26, coercions: 501} | |
lvl7_r5np | |
:: Book' | |
Identity | |
(Bookkeeper.Internal.Types.Insert | |
"name" | |
[Char] | |
(Bookkeeper.Internal.Types.Sort | |
'["name" :=> String, "age" :=> Int])) | |
lvl7_r5np = | |
modify | |
@ "name" | |
@ [Char] | |
@ [Char] | |
@ (Bookkeeper.Internal.Types.Sort | |
'["name" :=> String, "age" :=> Int]) | |
(lvl2_r5nk `cast` ...) | |
(Bookkeeper.Internal.Types.Key @ "name") | |
lvl6_r5no | |
(pb_r5nj `cast` ...) | |
-- RHS size: {terms: 5, types: 26, coercions: 307} | |
fusionB1_r5nq | |
:: Book' | |
Identity | |
(Bookkeeper.Internal.Types.Insert | |
"name" [Char] '["age" :=> Int, "name" :=> [Char]]) | |
fusionB1_r5nq = | |
modify | |
@ "name" | |
@ [Char] | |
@ [Char] | |
@ '["age" :=> Int, "name" :=> [Char]] | |
lvl2_r5nk | |
(Bookkeeper.Internal.Types.Key @ "name") | |
lvl4_r5nm | |
(lvl7_r5np `cast` ...) | |
-- RHS size: {terms: 1, types: 0, coercions: 309} | |
fusionB [InlPrag=NOINLINE] :: PersonB | |
fusionB = fusionB1_r5nq `cast` ... | |
-- RHS size: {terms: 3, types: 52, coercions: 333} | |
lvl8_r5nr | |
:: (Gettable | |
"name" | |
(Bookkeeper.Internal.Types.Sort | |
'["name" :=> String, "age" :=> Int]) | |
[Char], | |
Bookkeeper.Internal.Types.Insertable | |
"name" | |
[Char] | |
(Bookkeeper.Internal.Types.Sort | |
'["name" :=> String, "age" :=> Int])) | |
lvl8_r5nr = | |
($dSubset1_r5ne `cast` ..., $dInsertable_r5nf `cast` ...) | |
-- RHS size: {terms: 3, types: 64, coercions: 627} | |
lvl9_r5ns | |
:: (Gettable | |
"name" | |
(Bookkeeper.Internal.Types.Insert | |
"name" | |
[Char] | |
(Bookkeeper.Internal.Types.Sort | |
'["name" :=> String, "age" :=> Int])) | |
[Char], | |
Bookkeeper.Internal.Types.Insertable | |
"name" | |
[Char] | |
(Bookkeeper.Internal.Types.Insert | |
"name" | |
[Char] | |
(Bookkeeper.Internal.Types.Sort | |
'["name" :=> String, "age" :=> Int]))) | |
lvl9_r5ns = | |
($dSubset1_r5ne `cast` ..., $dInsertable_r5nf `cast` ...) | |
-- RHS size: {terms: 8, types: 41, coercions: 173} | |
fusionB'1_r5nt | |
:: Book' | |
Identity | |
(Bookkeeper.Internal.Types.Insert | |
"name" | |
[Char] | |
(Bookkeeper.Internal.Types.Insert | |
"name" | |
[Char] | |
(Bookkeeper.Internal.Types.Sort | |
'["name" :=> String, "age" :=> Int]))) | |
fusionB'1_r5nt = | |
fusedModify | |
@ "name" | |
@ [Char] | |
@ [Char] | |
@ (Bookkeeper.Internal.Types.Sort' | |
'["name" :=> String, "age" :=> Int] '[]) | |
@ [Char] | |
@ [Char] | |
lvl8_r5nr | |
((Eq# @ * @ * @ [Char] @ [Char] @~ ...) `cast` ...) | |
lvl9_r5ns | |
(Bookkeeper.Internal.Types.Key @ "name") | |
lvl4_r5nm | |
lvl6_r5no | |
(pb_r5nj `cast` ...) | |
-- RHS size: {terms: 1, types: 0, coercions: 627} | |
fusionB' [InlPrag=NOINLINE] :: PersonB | |
fusionB' = fusionB'1_r5nt `cast` ... | |
-- RHS size: {terms: 3, types: 20, coercions: 186} | |
main2 :: String | |
[GblId, | |
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=False, ConLike=False, | |
WorkFree=False, Expandable=False, Guidance=IF_ARGS [] 30 0}] | |
main2 = | |
Bookkeeper.Internal.Types.$fShowBook'_$cshow | |
@ '["age" :=> Int, "name" :=> [Char]] | |
($s$fShowBook'2 `cast` ...) | |
(fusionB' `cast` ...) | |
-- RHS size: {terms: 3, types: 20, coercions: 186} | |
main3 :: String | |
[GblId, | |
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=False, ConLike=False, | |
WorkFree=False, Expandable=False, Guidance=IF_ARGS [] 30 0}] | |
main3 = | |
Bookkeeper.Internal.Types.$fShowBook'_$cshow | |
@ '["age" :=> Int, "name" :=> [Char]] | |
($s$fShowBook'2 `cast` ...) | |
(fusionB `cast` ...) | |
-- RHS size: {terms: 13, types: 11, coercions: 0} | |
main1 | |
:: State# RealWorld | |
-> (# State# RealWorld, () #) | |
[GblId, | |
Arity=1, | |
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, | |
WorkFree=True, Expandable=True, Guidance=IF_ARGS [0] 90 0}] | |
main1 = | |
\ (s_a3gn [OS=OneShot] :: State# RealWorld) -> | |
case Handle.Text.hPutStr2 | |
Handle.FD.stdout main3 True s_a3gn | |
of _ [Occ=Dead] { (# ipv_a3gq, ipv1_a3gr #) -> | |
Handle.Text.hPutStr2 | |
Handle.FD.stdout main2 True ipv_a3gq | |
} | |
-- RHS size: {terms: 1, types: 0, coercions: 3} | |
main :: IO () | |
[GblId, | |
Arity=1, | |
Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True, | |
WorkFree=True, Expandable=True, | |
Guidance=ALWAYS_IF(arity=0,unsat_ok=True,boring_ok=True) | |
Tmpl= main1 `cast` ...}] | |
main = main1 `cast` ... | |
-- RHS size: {terms: 2, types: 1, coercions: 3} | |
main4 | |
:: State# RealWorld | |
-> (# State# RealWorld, () #) | |
[GblId, | |
Arity=1, | |
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, | |
WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 60}] | |
main4 = runMainIO1 @ () (main1 `cast` ...) | |
-- RHS size: {terms: 1, types: 0, coercions: 3} | |
:main :: IO () | |
[GblId, | |
Arity=1, | |
Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True, | |
WorkFree=True, Expandable=True, | |
Guidance=ALWAYS_IF(arity=0,unsat_ok=True,boring_ok=True) | |
Tmpl= main4 `cast` ...}] | |
:main = main4 `cast` ... | |
Linking bookkeeper/bench/Main ... | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment