==================== Specialise ==================== Result size of Specialise = {terms: 52, types: 41, coercions: 0, joins: 0/0} -- RHS size: {terms: 13, types: 10, coercions: 0, joins: 0/0} $sfoo [InlPrag=NOINLINE[0]] :: Int -> [Char] [LclId, Arity=1] $sfoo = \ (y :: Int) -> GHC.Base.build @Char (\ (@b) (c [OS=OneShot] :: Char -> b -> b) (n [OS=OneShot] :: b) -> GHC.Base.foldr @Char @b c (GHC.CString.unpackFoldrCString# @b "!"# c n) (GHC.Show.$fShowInt_$cshow y)) -- RHS size: {terms: 17, types: 15, coercions: 0, joins: 0/0} foo [InlPrag=NOINLINE[0]] :: forall a. () -> Show a => a -> String [LclIdX, Arity=3, Unf=Unf{Src=, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [0 30 0] 150 40}, RULES: "SPEC foo @Int" [0] forall (ds :: ()) ($dShow :: Show Int). foo @Int ds $dShow = $sfoo] foo = \ (@a) _ [Occ=Dead] ($dShow :: Show a) (y :: a) -> GHC.Base.build @Char (\ (@b) (c [OS=OneShot] :: Char -> b -> b) (n [OS=OneShot] :: b) -> GHC.Base.foldr @Char @b c (GHC.CString.unpackFoldrCString# @b "!"# c n) (show @a $dShow y)) -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0} $trModule :: GHC.Prim.Addr# [LclId, Unf=Unf{Src=, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 0}] $trModule = "main"# -- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0} $trModule :: GHC.Types.TrName [LclId, Unf=Unf{Src=, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 10}] $trModule = GHC.Types.TrNameS $trModule -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0} $trModule :: GHC.Prim.Addr# [LclId, Unf=Unf{Src=, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 50 0}] $trModule = "ShouldCompile"# -- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0} $trModule :: GHC.Types.TrName [LclId, Unf=Unf{Src=, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 10}] $trModule = GHC.Types.TrNameS $trModule -- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0} ShouldCompile.$trModule :: GHC.Types.Module [LclIdX, Unf=Unf{Src=, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 10}] ShouldCompile.$trModule = GHC.Types.Module $trModule $trModule -- RHS size: {terms: 5, types: 1, coercions: 0, joins: 0/0} bar :: String [LclIdX, Unf=Unf{Src=, TopLvl=True, Value=False, ConLike=False, WorkFree=False, Expandable=False, Guidance=IF_ARGS [] 50 0}] bar = foo @Int GHC.Tuple.() GHC.Show.$fShowInt (GHC.Types.I# 42#)