Skip to content

Instantly share code, notes, and snippets.

@osa1
Created June 6, 2016 08:21
Show Gist options
  • Select an option

  • Save osa1/ef41506079e3e60abe289d09e078ea5a to your computer and use it in GitHub Desktop.

Select an option

Save osa1/ef41506079e3e60abe289d09e078ea5a to your computer and use it in GitHub Desktop.
==================== STG syntax: ====================
2016-06-06 08:13:50.663576479 UTC
Main.$WCons [InlPrag=INLINE]
:: forall a_art. a_art -> Main.List a_art -> Main.List a_art
[GblId[DataConWrapper],
Arity=2,
Caf=NoCafRefs,
Str=DmdType <S,U><S,U>m1,
Unf=OtherCon []] =
\r srt:SRT:[] [dt_s6tR dt_s6tS]
case dt_s6tR of dt_s6tT {
__DEFAULT ->
case dt_s6tS of dt_s6tU {
__DEFAULT -> Main.Cons [dt_s6tT dt_s6tU];
};
};
Main.main2 :: Text.ParserCombinators.ReadP.P GHC.Types.Int
[GblId, Str=DmdType] =
\u srt:SRT:[rb :-> GHC.Read.$fReadInt_$sconvertInt,
rc :-> GHC.Read.$fReadInt3] []
GHC.Read.$fReadInt3
GHC.Read.$fReadInt_$sconvertInt
Text.ParserCombinators.ReadPrec.minPrec
Text.ParserCombinators.ReadP.$fApplicativeP_$cpure;
lvl1_r6tI :: GHC.Base.Maybe GHC.Types.Int -> GHC.Base.String
[GblId, Arity=1, Str=DmdType <S,1*U>, Unf=OtherCon []] =
\r srt:SRT:[r13 :-> GHC.Show.$fShowMaybe1,
r19 :-> GHC.Show.$fShowMaybe3] [x_s6tV]
case x_s6tV of _ [Occ=Dead] {
GHC.Base.Nothing -> GHC.Show.$fShowMaybe3;
GHC.Base.Just b1_s6tX [Occ=Once!] ->
let {
sat_s6u3 [Occ=Once, Dmd=<L,1*U>] :: [GHC.Types.Char]
[LclId, Str=DmdType] =
\s srt:SRT:[] []
case b1_s6tX of _ [Occ=Dead] {
GHC.Types.I# ww3_s6tZ [Occ=Once] ->
case
GHC.Show.$wshowSignedInt 11# ww3_s6tZ GHC.Types.[]
of
_ [Occ=Dead]
{ (#,#) ww5_s6u1 [Occ=Once] ww6_s6u2 [Occ=Once] ->
: [ww5_s6u1 ww6_s6u2];
};
};
} in GHC.Base.++ GHC.Show.$fShowMaybe1 sat_s6u3;
};
lvl2_r6tJ
:: GHC.Types.Int -> GHC.Base.Maybe GHC.Types.Int -> GHC.Show.ShowS
[GblId, Arity=2, Str=DmdType, Unf=OtherCon []] =
\r srt:SRT:[rN :-> GHC.Show.$fShowMaybe_$cshowsPrec] [eta_B2
eta_B1]
GHC.Show.$fShowMaybe_$cshowsPrec GHC.Show.$fShowInt eta_B2 eta_B1;
lvl3_r6tK :: GHC.Base.Maybe GHC.Types.Int -> GHC.Show.ShowS
[GblId, Arity=1, Str=DmdType, Unf=OtherCon []] =
\r srt:SRT:[rN :-> GHC.Show.$fShowMaybe_$cshowsPrec] [eta_B1]
GHC.Show.$fShowMaybe_$cshowsPrec
GHC.Show.$fShowInt GHC.Show.shows22 eta_B1;
Main.$s$fShowMaybe_$s$fShowMaybe_$cshowList
:: [GHC.Base.Maybe GHC.Types.Int] -> GHC.Show.ShowS
[GblId, Arity=2, Str=DmdType <S,1*U><L,U>, Unf=OtherCon []] =
\r srt:SRT:[r6tK :-> lvl3_r6tK] [eta_s6u4 eta1_s6u5]
GHC.Show.showList__ lvl3_r6tK eta_s6u4 eta1_s6u5;
Main.$s$fShowMaybe [InlPrag=[ALWAYS] CONLIKE]
:: GHC.Show.Show (GHC.Base.Maybe GHC.Types.Int)
[GblId, Str=DmdType m, Unf=OtherCon []] =
NO_CCS GHC.Show.C:Show! [lvl2_r6tJ
lvl1_r6tI
Main.$s$fShowMaybe_$s$fShowMaybe_$cshowList];
lvl4_r6tL :: [GHC.Types.Char]
[GblId, Str=DmdType] =
\u srt:SRT:[] [] GHC.CString.unpackCString# "Nil"#;
lvl5_r6tM :: GHC.Show.ShowS
[GblId, Arity=1, Str=DmdType, Unf=OtherCon []] =
\r srt:SRT:[r6tL :-> lvl4_r6tL] [eta_B1]
GHC.Base.++ lvl4_r6tL eta_B1;
lvl6_r6tN :: [GHC.Types.Char]
[GblId, Str=DmdType] =
\u srt:SRT:[] [] GHC.CString.unpackCString# "Cons "#;
Main.$fShowItem4 :: [GHC.Types.Char]
[GblId, Caf=NoCafRefs, Str=DmdType, Unf=OtherCon []] =
NO_CCS :! [GHC.Show.shows6 GHC.Types.[]];
Main.$fShowItem5 :: [GHC.Types.Char]
[GblId, Str=DmdType] =
\u srt:SRT:[r19 :-> GHC.Show.$fShowMaybe3] []
GHC.Base.++ GHC.Show.$fShowMaybe3 GHC.Types.[];
Main.$fShowItem3 :: GHC.Types.Int
[GblId, Caf=NoCafRefs, Str=DmdType m, Unf=OtherCon []] =
NO_CCS GHC.Types.I#! [11#];
Main.$fShowList_$s$cshowsPrec [Occ=LoopBreaker]
:: Main.List (Main.Item GHC.Types.Int)
-> GHC.Prim.Int#
-> GHC.Show.Show (Main.Item GHC.Types.Int) => GHC.Show.ShowS
[GblId,
Arity=3,
Str=DmdType <S,1*U><L,U><L,U(C(C1(U)),A,A)>,
Unf=OtherCon []] =
\r srt:SRT:[rh :-> Main.$fShowList_$s$cshowsPrec,
r6tM :-> lvl5_r6tM, r6tN :-> lvl6_r6tN] [sc_s6u6 sc1_s6u7 sc2_s6u8]
case sc_s6u6 of _ [Occ=Dead] {
Main.Cons b1_s6ua [Occ=Once] b2_s6ub [Occ=Once] ->
let {
f_s6uc [Occ=OnceL*!, Dmd=<L,C(U)>]
:: GHC.Base.String -> GHC.Base.String
[LclId, Str=DmdType] =
\u srt:SRT:[] []
GHC.Show.showsPrec sc2_s6u8 Main.$fShowItem3 b1_s6ua; } in
let {
g_s6ud [Occ=OnceL*!, Dmd=<L,C(U)>]
:: GHC.Base.String -> GHC.Base.String
[LclId, Str=DmdType] =
\u srt:SRT:[rh :-> Main.$fShowList_$s$cshowsPrec] []
Main.$fShowList_$s$cshowsPrec b2_s6ub 11# sc2_s6u8;
} in
case >=# [sc1_s6u7 11#] of sat_s6ue {
__DEFAULT ->
case tagToEnum# [sat_s6ue] of _ [Occ=Dead] {
GHC.Types.False ->
let {
sat_s6uk [Occ=Once] :: GHC.Base.String -> [GHC.Types.Char]
[LclId, Str=DmdType] =
\r srt:SRT:[r6tN :-> lvl6_r6tN] [x_s6ug]
let {
sat_s6uj [Occ=Once, Dmd=<L,1*U>] :: [GHC.Types.Char]
[LclId, Str=DmdType] =
\s srt:SRT:[] []
let {
sat_s6uh [Occ=Once] :: [GHC.Types.Char]
[LclId, Str=DmdType] =
\u srt:SRT:[] [] g_s6ud x_s6ug; } in
let {
sat_s6ui [Occ=Once] :: GHC.Base.String
[LclId, Str=DmdType] =
NO_CCS :! [GHC.Show.showSpace1 sat_s6uh];
} in f_s6uc sat_s6ui;
} in GHC.Base.++ lvl6_r6tN sat_s6uj;
} in sat_s6uk;
GHC.Types.True ->
let {
sat_s6ur [Occ=Once] :: GHC.Base.String -> [GHC.Types.Char]
[LclId, Str=DmdType] =
\r srt:SRT:[r6tN :-> lvl6_r6tN] [x_s6ul]
let {
sat_s6uq [Occ=Once] :: [GHC.Types.Char]
[LclId, Str=DmdType] =
\u srt:SRT:[r6tN :-> lvl6_r6tN] []
let {
sat_s6up [Occ=Once, Dmd=<L,1*U>]
:: [GHC.Types.Char]
[LclId, Str=DmdType] =
\s srt:SRT:[] []
let {
sat_s6un [Occ=Once] :: [GHC.Types.Char]
[LclId, Str=DmdType] =
\u srt:SRT:[] []
let {
sat_s6um [Occ=Once]
:: GHC.Base.String
[LclId, Str=DmdType] =
NO_CCS :! [GHC.Show.shows6
x_s6ul];
} in g_s6ud sat_s6um; } in
let {
sat_s6uo [Occ=Once] :: GHC.Base.String
[LclId, Str=DmdType] =
NO_CCS :! [GHC.Show.showSpace1
sat_s6un];
} in f_s6uc sat_s6uo;
} in GHC.Base.++ lvl6_r6tN sat_s6up;
} in : [GHC.Show.shows9 sat_s6uq];
} in sat_s6ur;
};
};
Main.Nil -> lvl5_r6tM;
};
Main.$fShowList_$cshowsPrec [Occ=LoopBreaker]
:: forall a_a2wy.
GHC.Show.Show a_a2wy =>
GHC.Types.Int -> Main.List a_a2wy -> GHC.Show.ShowS
[GblId,
Arity=3,
Str=DmdType <L,U(C(C1(U)),A,A)><L,1*U(U)><S,1*U>,
Unf=OtherCon []] =
\r srt:SRT:[rR :-> Main.$fShowList_$cshowsPrec, r6tM :-> lvl5_r6tM,
r6tN :-> lvl6_r6tN] [$dShow_s6us a1_s6ut ds_s6uu]
case ds_s6uu of _ [Occ=Dead] {
Main.Cons b1_s6uw [Occ=Once] b2_s6ux [Occ=Once] ->
case a1_s6ut of _ [Occ=Dead] {
GHC.Types.I# x_s6uz [Occ=Once] ->
let {
f_s6uA [Occ=OnceL*!, Dmd=<L,C(U)>]
:: GHC.Base.String -> GHC.Base.String
[LclId, Str=DmdType] =
\u srt:SRT:[] []
GHC.Show.showsPrec $dShow_s6us Main.$fShowItem3 b1_s6uw; } in
let {
g_s6uB [Occ=OnceL*!, Dmd=<L,C(U)>]
:: GHC.Base.String -> GHC.Base.String
[LclId, Str=DmdType] =
\u srt:SRT:[rR :-> Main.$fShowList_$cshowsPrec] []
Main.$fShowList_$cshowsPrec $dShow_s6us Main.$fShowItem3 b2_s6ux;
} in
case >=# [x_s6uz 11#] of sat_s6uC {
__DEFAULT ->
case tagToEnum# [sat_s6uC] of _ [Occ=Dead] {
GHC.Types.False ->
let {
sat_s6uI [Occ=Once] :: GHC.Base.String -> [GHC.Types.Char]
[LclId, Str=DmdType] =
\r srt:SRT:[r6tN :-> lvl6_r6tN] [x1_s6uE]
let {
sat_s6uH [Occ=Once, Dmd=<L,1*U>] :: [GHC.Types.Char]
[LclId, Str=DmdType] =
\s srt:SRT:[] []
let {
sat_s6uF [Occ=Once] :: [GHC.Types.Char]
[LclId, Str=DmdType] =
\u srt:SRT:[] [] g_s6uB x1_s6uE; } in
let {
sat_s6uG [Occ=Once] :: GHC.Base.String
[LclId, Str=DmdType] =
NO_CCS :! [GHC.Show.showSpace1
sat_s6uF];
} in f_s6uA sat_s6uG;
} in GHC.Base.++ lvl6_r6tN sat_s6uH;
} in sat_s6uI;
GHC.Types.True ->
let {
sat_s6uP [Occ=Once] :: GHC.Base.String -> [GHC.Types.Char]
[LclId, Str=DmdType] =
\r srt:SRT:[r6tN :-> lvl6_r6tN] [x1_s6uJ]
let {
sat_s6uO [Occ=Once] :: [GHC.Types.Char]
[LclId, Str=DmdType] =
\u srt:SRT:[r6tN :-> lvl6_r6tN] []
let {
sat_s6uN [Occ=Once, Dmd=<L,1*U>]
:: [GHC.Types.Char]
[LclId, Str=DmdType] =
\s srt:SRT:[] []
let {
sat_s6uL [Occ=Once]
:: [GHC.Types.Char]
[LclId, Str=DmdType] =
\u srt:SRT:[] []
let {
sat_s6uK [Occ=Once]
:: GHC.Base.String
[LclId, Str=DmdType] =
NO_CCS :! [GHC.Show.shows6
x1_s6uJ];
} in
g_s6uB sat_s6uK; } in
let {
sat_s6uM [Occ=Once]
:: GHC.Base.String
[LclId, Str=DmdType] =
NO_CCS :! [GHC.Show.showSpace1
sat_s6uL];
} in f_s6uA sat_s6uM;
} in GHC.Base.++ lvl6_r6tN sat_s6uN;
} in : [GHC.Show.shows9 sat_s6uO];
} in sat_s6uP;
};
};
};
Main.Nil -> lvl5_r6tM;
};
Main.$fShowList_$cshow
:: forall a_a2wy.
GHC.Show.Show a_a2wy =>
Main.List a_a2wy -> GHC.Base.String
[GblId,
Arity=2,
Str=DmdType <L,U(C(C1(U)),A,A)><S,1*U>,
Unf=OtherCon []] =
\r srt:SRT:[rR :-> Main.$fShowList_$cshowsPrec] [$dShow_s6uQ
x_s6uR]
Main.$fShowList_$cshowsPrec
$dShow_s6uQ GHC.Show.shows22 x_s6uR GHC.Types.[];
Main.$fShowItem2 :: [GHC.Types.Char]
[GblId, Str=DmdType] =
\u srt:SRT:[] [] GHC.CString.unpackCString# "Item "#;
Main.$w$s$cshowsPrec [InlPrag=[0]]
:: GHC.Prim.Int# -> Main.Item GHC.Types.Int -> GHC.Show.ShowS
[GblId, Arity=2, Str=DmdType <S,U><L,1*U>, Unf=OtherCon []] =
\r srt:SRT:[rN :-> GHC.Show.$fShowMaybe_$cshowsPrec,
r17 :-> Main.$fShowItem2] [ww_s6uS w_s6uT]
let {
g_s6uU [Occ=OnceL*!, Dmd=<L,C(U)>]
:: GHC.Base.String -> GHC.Base.String
[LclId, Str=DmdType] =
\u srt:SRT:[rN :-> GHC.Show.$fShowMaybe_$cshowsPrec] []
GHC.Show.$fShowMaybe_$cshowsPrec
GHC.Show.$fShowInt Main.$fShowItem3 w_s6uT;
} in
case >=# [ww_s6uS 11#] of sat_s6uV {
__DEFAULT ->
case tagToEnum# [sat_s6uV] of _ [Occ=Dead] {
GHC.Types.False ->
let {
sat_s6uZ [Occ=Once] :: GHC.Base.String -> [GHC.Types.Char]
[LclId, Str=DmdType] =
\r srt:SRT:[r17 :-> Main.$fShowItem2] [x_s6uX]
let {
sat_s6uY [Occ=Once, Dmd=<L,1*U>] :: [GHC.Types.Char]
[LclId, Str=DmdType] =
\s srt:SRT:[] [] g_s6uU x_s6uX;
} in GHC.Base.++ Main.$fShowItem2 sat_s6uY;
} in sat_s6uZ;
GHC.Types.True ->
let {
sat_s6v4 [Occ=Once] :: GHC.Base.String -> [GHC.Types.Char]
[LclId, Str=DmdType] =
\r srt:SRT:[r17 :-> Main.$fShowItem2] [x_s6v0]
let {
sat_s6v3 [Occ=Once] :: [GHC.Types.Char]
[LclId, Str=DmdType] =
\u srt:SRT:[r17 :-> Main.$fShowItem2] []
let {
sat_s6v2 [Occ=Once, Dmd=<L,1*U>] :: [GHC.Types.Char]
[LclId, Str=DmdType] =
\s srt:SRT:[] []
let {
sat_s6v1 [Occ=Once] :: GHC.Base.String
[LclId, Str=DmdType] =
NO_CCS :! [GHC.Show.shows6 x_s6v0];
} in g_s6uU sat_s6v1;
} in GHC.Base.++ Main.$fShowItem2 sat_s6v2;
} in : [GHC.Show.shows9 sat_s6v3];
} in sat_s6v4;
};
};
Main.$fShowItem_$s$cshowsPrec [InlPrag=INLINE[0]]
:: GHC.Types.Int -> Main.Item GHC.Types.Int -> GHC.Show.ShowS
[GblId,
Arity=2,
Str=DmdType <S(S),1*U(U)><L,1*U>,
Unf=OtherCon []] =
\r srt:SRT:[r1b :-> Main.$w$s$cshowsPrec] [w_s6v5 w1_s6v6]
case w_s6v5 of _ [Occ=Dead] {
GHC.Types.I# ww1_s6v8 [Occ=Once] ->
Main.$w$s$cshowsPrec ww1_s6v8 w1_s6v6;
};
Main.$fShowItem1 :: Main.Item GHC.Types.Int -> GHC.Show.ShowS
[GblId, Arity=1, Str=DmdType, Unf=OtherCon []] =
\r srt:SRT:[r1b :-> Main.$w$s$cshowsPrec] [w_s6v9]
Main.$w$s$cshowsPrec 0# w_s6v9;
Main.$fShowItem_$s$cshowList
:: [Main.Item GHC.Types.Int] -> GHC.Show.ShowS
[GblId, Arity=2, Str=DmdType <S,1*U><L,U>, Unf=OtherCon []] =
\r srt:SRT:[rV :-> Main.$fShowItem1] [eta_s6va eta1_s6vb]
GHC.Show.showList__ Main.$fShowItem1 eta_s6va eta1_s6vb;
Main.$fShowItem_$s$cshow
:: Main.Item GHC.Types.Int -> GHC.Base.String
[GblId, Arity=1, Str=DmdType <L,1*U>, Unf=OtherCon []] =
\r srt:SRT:[r13 :-> GHC.Show.$fShowMaybe1,
r15 :-> Main.$fShowItem5, r17 :-> Main.$fShowItem2] [x_s6vc]
let {
sat_s6vm [Occ=Once, Dmd=<L,1*U>] :: [GHC.Types.Char]
[LclId, Str=DmdType] =
\s srt:SRT:[r13 :-> GHC.Show.$fShowMaybe1,
r15 :-> Main.$fShowItem5] []
case x_s6vc of _ [Occ=Dead] {
GHC.Base.Nothing -> Main.$fShowItem5;
GHC.Base.Just b1_s6ve [Occ=Once!] ->
let {
sat_s6vl [Occ=Once] :: [GHC.Types.Char]
[LclId, Str=DmdType] =
\u srt:SRT:[r13 :-> GHC.Show.$fShowMaybe1] []
let {
sat_s6vk [Occ=Once, Dmd=<L,1*U>] :: [GHC.Types.Char]
[LclId, Str=DmdType] =
\s srt:SRT:[] []
case b1_s6ve of _ [Occ=Dead] {
GHC.Types.I# ww3_s6vg [Occ=Once] ->
case
GHC.Show.$wshowSignedInt
11# ww3_s6vg Main.$fShowItem4
of
_ [Occ=Dead]
{ (#,#) ww5_s6vi [Occ=Once] ww6_s6vj [Occ=Once] ->
: [ww5_s6vi ww6_s6vj];
};
};
} in GHC.Base.++ GHC.Show.$fShowMaybe1 sat_s6vk;
} in : [GHC.Show.shows9 sat_s6vl];
};
} in GHC.Base.++ Main.$fShowItem2 sat_s6vm;
Main.$fShowItem_$s$fShowItem [InlPrag=[ALWAYS] CONLIKE]
:: GHC.Show.Show (Main.Item GHC.Types.Int)
[GblId, Str=DmdType m, Unf=OtherCon []] =
NO_CCS GHC.Show.C:Show! [Main.$fShowItem_$s$cshowsPrec
Main.$fShowItem_$s$cshow
Main.$fShowItem_$s$cshowList];
Main.$w$cshowsPrec [InlPrag=[0]]
:: forall a_a2vM.
GHC.Show.Show a_a2vM =>
GHC.Prim.Int# -> Main.Item a_a2vM -> GHC.Show.ShowS
[GblId,
Arity=3,
Str=DmdType <L,1*U(1*C1(C1(U)),A,A)><S,U><L,1*U>,
Unf=OtherCon []] =
\r srt:SRT:[rN :-> GHC.Show.$fShowMaybe_$cshowsPrec,
r17 :-> Main.$fShowItem2] [w_s6vn ww_s6vo w1_s6vp]
let {
g_s6vq [Occ=OnceL*!, Dmd=<L,C(U)>]
:: GHC.Base.String -> GHC.Base.String
[LclId, Str=DmdType] =
\u srt:SRT:[rN :-> GHC.Show.$fShowMaybe_$cshowsPrec] []
GHC.Show.$fShowMaybe_$cshowsPrec w_s6vn Main.$fShowItem3 w1_s6vp;
} in
case >=# [ww_s6vo 11#] of sat_s6vr {
__DEFAULT ->
case tagToEnum# [sat_s6vr] of _ [Occ=Dead] {
GHC.Types.False ->
let {
sat_s6vv [Occ=Once] :: GHC.Base.String -> [GHC.Types.Char]
[LclId, Str=DmdType] =
\r srt:SRT:[r17 :-> Main.$fShowItem2] [x_s6vt]
let {
sat_s6vu [Occ=Once, Dmd=<L,1*U>] :: [GHC.Types.Char]
[LclId, Str=DmdType] =
\s srt:SRT:[] [] g_s6vq x_s6vt;
} in GHC.Base.++ Main.$fShowItem2 sat_s6vu;
} in sat_s6vv;
GHC.Types.True ->
let {
sat_s6vA [Occ=Once] :: GHC.Base.String -> [GHC.Types.Char]
[LclId, Str=DmdType] =
\r srt:SRT:[r17 :-> Main.$fShowItem2] [x_s6vw]
let {
sat_s6vz [Occ=Once] :: [GHC.Types.Char]
[LclId, Str=DmdType] =
\u srt:SRT:[r17 :-> Main.$fShowItem2] []
let {
sat_s6vy [Occ=Once, Dmd=<L,1*U>] :: [GHC.Types.Char]
[LclId, Str=DmdType] =
\s srt:SRT:[] []
let {
sat_s6vx [Occ=Once] :: GHC.Base.String
[LclId, Str=DmdType] =
NO_CCS :! [GHC.Show.shows6 x_s6vw];
} in g_s6vq sat_s6vx;
} in GHC.Base.++ Main.$fShowItem2 sat_s6vy;
} in : [GHC.Show.shows9 sat_s6vz];
} in sat_s6vA;
};
};
Main.$fShowItem_$cshowsPrec [InlPrag=INLINE[0]]
:: forall a_a2vM.
GHC.Show.Show a_a2vM =>
GHC.Types.Int -> Main.Item a_a2vM -> GHC.Show.ShowS
[GblId,
Arity=3,
Str=DmdType <L,1*U(1*C1(C1(U)),A,A)><S(S),1*U(U)><L,1*U>,
Unf=OtherCon []] =
\r srt:SRT:[rX :-> Main.$w$cshowsPrec] [w_s6vB w1_s6vC w2_s6vD]
case w1_s6vC of _ [Occ=Dead] {
GHC.Types.I# ww1_s6vF [Occ=Once] ->
Main.$w$cshowsPrec w_s6vB ww1_s6vF w2_s6vD;
};
Main.$fShowItem_$cshow
:: forall a_a2vM.
GHC.Show.Show a_a2vM =>
Main.Item a_a2vM -> GHC.Base.String
[GblId,
Arity=2,
Str=DmdType <L,1*U(1*C1(C1(C1(U))),A,A)><L,1*U>,
Unf=OtherCon []] =
\r srt:SRT:[r13 :-> GHC.Show.$fShowMaybe1,
r15 :-> Main.$fShowItem5, r17 :-> Main.$fShowItem2] [$dShow_s6vG
x_s6vH]
let {
sat_s6vM [Occ=Once, Dmd=<L,1*U>] :: [GHC.Types.Char]
[LclId, Str=DmdType] =
\s srt:SRT:[r13 :-> GHC.Show.$fShowMaybe1,
r15 :-> Main.$fShowItem5] []
case x_s6vH of _ [Occ=Dead] {
GHC.Base.Nothing -> Main.$fShowItem5;
GHC.Base.Just b1_s6vJ [Occ=Once] ->
let {
sat_s6vL [Occ=Once] :: [GHC.Types.Char]
[LclId, Str=DmdType] =
\u srt:SRT:[r13 :-> GHC.Show.$fShowMaybe1] []
let {
sat_s6vK [Occ=Once, Dmd=<L,1*U>] :: [GHC.Types.Char]
[LclId, Str=DmdType] =
\s srt:SRT:[] []
GHC.Show.showsPrec
$dShow_s6vG
GHC.Show.appPrec1
b1_s6vJ
Main.$fShowItem4;
} in GHC.Base.++ GHC.Show.$fShowMaybe1 sat_s6vK;
} in : [GHC.Show.shows9 sat_s6vL];
};
} in GHC.Base.++ Main.$fShowItem2 sat_s6vM;
Main.$fShowItem6 :: GHC.Types.Int
[GblId, Caf=NoCafRefs, Str=DmdType m, Unf=OtherCon []] =
NO_CCS GHC.Types.I#! [0#];
Main.$fShowItem_$cshowList
:: forall a_a2vM.
GHC.Show.Show a_a2vM =>
[Main.Item a_a2vM] -> GHC.Show.ShowS
[GblId,
Arity=3,
Str=DmdType <L,U(C(C1(U)),A,A)><S,1*U><L,U>,
Unf=OtherCon []] =
\r srt:SRT:[rX :-> Main.$w$cshowsPrec] [$dShow_s6vN
eta_s6vO
eta1_s6vP]
let {
sat_s6vR [Occ=Once] :: Main.Item a_a2vM -> GHC.Show.ShowS
[LclId, Str=DmdType] =
\r srt:SRT:[rX :-> Main.$w$cshowsPrec] [w_s6vQ]
Main.$w$cshowsPrec $dShow_s6vN 0# w_s6vQ;
} in GHC.Show.showList__ sat_s6vR eta_s6vO eta1_s6vP;
Main.$fShowItem [InlPrag=[ALWAYS] CONLIKE]
:: forall a_a1dN.
GHC.Show.Show a_a1dN =>
GHC.Show.Show (Main.Item a_a1dN)
[GblId[DFunId],
Arity=1,
Str=DmdType <L,U(C(C1(U)),A,A)>m,
Unf=OtherCon []] =
\r srt:SRT:[r1d :-> Main.$fShowItem_$cshowList,
r1e :-> Main.$fShowItem_$cshow,
r1f :-> Main.$fShowItem_$cshowsPrec] [$dShow_s6vS]
let {
sat_s6vV [Occ=Once] :: [Main.Item a_a2vM] -> GHC.Show.ShowS
[LclId, Str=DmdType] =
\r srt:SRT:[r1d :-> Main.$fShowItem_$cshowList] [eta_B2 eta_B1]
Main.$fShowItem_$cshowList $dShow_s6vS eta_B2 eta_B1; } in
let {
sat_s6vU [Occ=Once] :: Main.Item a_a2vM -> GHC.Base.String
[LclId, Str=DmdType] =
\r srt:SRT:[r1e :-> Main.$fShowItem_$cshow] [eta_B1]
Main.$fShowItem_$cshow $dShow_s6vS eta_B1; } in
let {
sat_s6vT [Occ=Once]
:: GHC.Types.Int -> Main.Item a_a2vM -> GHC.Show.ShowS
[LclId, Str=DmdType] =
\r srt:SRT:[r1f :-> Main.$fShowItem_$cshowsPrec] [eta_B2 eta_B1]
Main.$fShowItem_$cshowsPrec $dShow_s6vS eta_B2 eta_B1;
} in GHC.Show.C:Show [sat_s6vT sat_s6vU sat_s6vV];
Main.$fShowList_$cshowList
:: forall a_a2wy.
GHC.Show.Show a_a2wy =>
[Main.List a_a2wy] -> GHC.Show.ShowS
[GblId,
Arity=3,
Str=DmdType <L,U(C(C1(U)),A,A)><S,1*U><L,U>,
Unf=OtherCon []] =
\r srt:SRT:[rR :-> Main.$fShowList_$cshowsPrec] [$dShow_s6vW
eta_s6vX
eta1_s6vY]
let {
sat_s6vZ [Occ=Once] :: Main.List a_a2wy -> GHC.Show.ShowS
[LclId, Str=DmdType] =
\r srt:SRT:[rR :-> Main.$fShowList_$cshowsPrec] [eta_B1]
Main.$fShowList_$cshowsPrec $dShow_s6vW Main.$fShowItem6 eta_B1;
} in GHC.Show.showList__ sat_s6vZ eta_s6vX eta1_s6vY;
Main.$fShowList [InlPrag=[ALWAYS] CONLIKE]
:: forall a_a1dO.
GHC.Show.Show a_a1dO =>
GHC.Show.Show (Main.List a_a1dO)
[GblId[DFunId],
Arity=1,
Str=DmdType <L,U(C(C1(U)),A,A)>m,
Unf=OtherCon []] =
\r srt:SRT:[rP :-> Main.$fShowList_$cshowList,
rQ :-> Main.$fShowList_$cshow,
rR :-> Main.$fShowList_$cshowsPrec] [$dShow_s6w0]
let {
sat_s6w3 [Occ=Once] :: [Main.List a_a2wy] -> GHC.Show.ShowS
[LclId, Str=DmdType] =
\r srt:SRT:[rP :-> Main.$fShowList_$cshowList] [eta_B2 eta_B1]
Main.$fShowList_$cshowList $dShow_s6w0 eta_B2 eta_B1; } in
let {
sat_s6w2 [Occ=Once] :: Main.List a_a2wy -> GHC.Base.String
[LclId, Str=DmdType] =
\r srt:SRT:[rQ :-> Main.$fShowList_$cshow] [eta_B1]
Main.$fShowList_$cshow $dShow_s6w0 eta_B1; } in
let {
sat_s6w1 [Occ=Once]
:: GHC.Types.Int -> Main.List a_a2wy -> GHC.Show.ShowS
[LclId, Str=DmdType] =
\r srt:SRT:[rR :-> Main.$fShowList_$cshowsPrec] [eta_B2 eta_B1]
Main.$fShowList_$cshowsPrec $dShow_s6w0 eta_B2 eta_B1;
} in GHC.Show.C:Show [sat_s6w1 sat_s6w2 sat_s6w3];
Main.$fFunctorList_$s$cfmap [Occ=LoopBreaker]
:: Main.List (GHC.Base.Maybe GHC.Types.Int)
-> ((GHC.Base.Maybe GHC.Types.Int
-> GHC.Base.Maybe GHC.Types.Int) :: *)
~R#
((GHC.Base.Maybe GHC.Types.Int -> Main.Item GHC.Types.Int) :: *) =>
Main.List (Main.Item GHC.Types.Int)
[GblId,
Arity=2,
Caf=NoCafRefs,
Str=DmdType <S,1*U><L,U>,
Unf=OtherCon []] =
\r srt:SRT:[] [sc_s6w4 sg0_s6sk]
case sc_s6w4 of _ [Occ=Dead] {
Main.Cons a1_s6w6 [Occ=Once] a2_s6w7 [Occ=Once] ->
case
Main.$fFunctorList_$s$cfmap a2_s6w7 GHC.Prim.coercionToken#
of
dt_s6w8
{ __DEFAULT -> Main.Cons [a1_s6w6 dt_s6w8];
};
Main.Nil -> Main.Nil [];
};
Main.$fFunctorList_$cfmap [Occ=LoopBreaker]
:: forall a_aOt b_aOu.
(a_aOt -> b_aOu) -> Main.List a_aOt -> Main.List b_aOu
[GblId,
Arity=2,
Caf=NoCafRefs,
Str=DmdType <L,C(U)><S,1*U>,
Unf=OtherCon []] =
\r srt:SRT:[] [f_s6w9 ds_s6wa]
case ds_s6wa of _ [Occ=Dead] {
Main.Cons a1_s6wc [Occ=Once] a2_s6wd [Occ=Once] ->
case f_s6w9 a1_s6wc of dt_s6we {
__DEFAULT ->
case Main.$fFunctorList_$cfmap f_s6w9 a2_s6wd of dt1_s6wf {
__DEFAULT -> Main.Cons [dt_s6we dt1_s6wf];
};
};
Main.Nil -> Main.Nil [];
};
Main.$fFunctorList_$c<$
:: forall a_aOv b_aOw. a_aOv -> Main.List b_aOw -> Main.List a_aOv
[GblId,
Arity=2,
Caf=NoCafRefs,
Str=DmdType <L,U><S,1*U>,
Unf=OtherCon []] =
\r srt:SRT:[] [eta_s6wg eta1_s6wh]
let {
sat_s6wj [Occ=Once] :: b_a3lu -> a_a3lt
[LclId, Str=DmdType] =
\r srt:SRT:[] [ds_s6wi] eta_s6wg;
} in Main.$fFunctorList_$cfmap sat_s6wj eta1_s6wh;
Main.$fFunctorList [InlPrag=[ALWAYS] CONLIKE]
:: GHC.Base.Functor Main.List
[GblId[DFunId], Caf=NoCafRefs, Str=DmdType m, Unf=OtherCon []] =
NO_CCS GHC.Base.C:Functor! [Main.$fFunctorList_$cfmap
Main.$fFunctorList_$c<$];
Main.maybeToItem1
:: forall a_a29W. GHC.Base.Maybe a_a29W -> GHC.Base.Maybe a_a29W
[GblId,
Arity=1,
Caf=NoCafRefs,
Str=DmdType <S,1*U>,
Unf=OtherCon []] =
\r srt:SRT:[] [tpl_s6wk] tpl_s6wk;
Main.maybeToItem
:: forall a_aIy. GHC.Base.Maybe a_aIy -> Main.Item a_aIy
[GblId,
Arity=1,
Caf=NoCafRefs,
Str=DmdType <S,1*U>,
Unf=OtherCon []] =
\r srt:SRT:[] [eta_B1] Main.maybeToItem1 eta_B1;
Main.$trModule2 :: GHC.Types.TrName
[GblId, Caf=NoCafRefs, Str=DmdType m1, Unf=OtherCon []] =
NO_CCS GHC.Types.TrNameS! ["main"#];
Main.$trModule1 :: GHC.Types.TrName
[GblId, Caf=NoCafRefs, Str=DmdType m1, Unf=OtherCon []] =
NO_CCS GHC.Types.TrNameS! ["Main"#];
Main.$trModule :: GHC.Types.Module
[GblId, Caf=NoCafRefs, Str=DmdType m, Unf=OtherCon []] =
NO_CCS GHC.Types.Module! [Main.$trModule2 Main.$trModule1];
Main.$tc'Item1 :: GHC.Types.TrName
[GblId, Caf=NoCafRefs, Str=DmdType m1, Unf=OtherCon []] =
NO_CCS GHC.Types.TrNameS! ["'Item"#];
Main.$tc'Item :: GHC.Types.TyCon
[GblId, Caf=NoCafRefs, Str=DmdType m, Unf=OtherCon []] =
NO_CCS GHC.Types.TyCon! [9403546597716412637##
4305456962569213254##
Main.$trModule
Main.$tc'Item1];
Main.$tcItem1 :: GHC.Types.TrName
[GblId, Caf=NoCafRefs, Str=DmdType m1, Unf=OtherCon []] =
NO_CCS GHC.Types.TrNameS! ["Item"#];
Main.$tcItem :: GHC.Types.TyCon
[GblId, Caf=NoCafRefs, Str=DmdType m, Unf=OtherCon []] =
NO_CCS GHC.Types.TyCon! [10616686856361203596##
7251075470827260331##
Main.$trModule
Main.$tcItem1];
Main.$tc'Nil1 :: GHC.Types.TrName
[GblId, Caf=NoCafRefs, Str=DmdType m1, Unf=OtherCon []] =
NO_CCS GHC.Types.TrNameS! ["'Nil"#];
Main.$tc'Nil :: GHC.Types.TyCon
[GblId, Caf=NoCafRefs, Str=DmdType m, Unf=OtherCon []] =
NO_CCS GHC.Types.TyCon! [16673662833419711035##
7628056425835309196##
Main.$trModule
Main.$tc'Nil1];
Main.$tc'Cons1 :: GHC.Types.TrName
[GblId, Caf=NoCafRefs, Str=DmdType m1, Unf=OtherCon []] =
NO_CCS GHC.Types.TrNameS! ["'Cons"#];
Main.$tc'Cons :: GHC.Types.TyCon
[GblId, Caf=NoCafRefs, Str=DmdType m, Unf=OtherCon []] =
NO_CCS GHC.Types.TyCon! [18207026349337875767##
15163872925107883080##
Main.$trModule
Main.$tc'Cons1];
Main.$tcList1 :: GHC.Types.TrName
[GblId, Caf=NoCafRefs, Str=DmdType m1, Unf=OtherCon []] =
NO_CCS GHC.Types.TrNameS! ["List"#];
Main.$tcList :: GHC.Types.TyCon
[GblId, Caf=NoCafRefs, Str=DmdType m, Unf=OtherCon []] =
NO_CCS GHC.Types.TyCon! [12354673840372940676##
2337390273253147553##
Main.$trModule
Main.$tcList1];
Main.$wmkList [InlPrag=[0], Occ=LoopBreaker]
:: GHC.Prim.Int# -> Main.List GHC.Types.Int
[GblId,
Arity=1,
Caf=NoCafRefs,
Str=DmdType <S,U>,
Unf=OtherCon []] =
\r srt:SRT:[] [ww_s6wl]
case ww_s6wl of ds_s6wm {
__DEFAULT ->
case -# [ds_s6wm 1#] of sat_s6wn {
__DEFAULT ->
case Main.$wmkList sat_s6wn of dt_s6wo {
__DEFAULT ->
let {
sat_s6wp [Occ=Once] :: GHC.Types.Int
[LclId, Str=DmdType] =
NO_CCS GHC.Types.I#! [ds_s6wm];
} in Main.Cons [sat_s6wp dt_s6wo];
};
};
0# -> Main.Nil [];
};
Main.mkList [InlPrag=INLINE[0]]
:: GHC.Types.Int -> Main.List GHC.Types.Int
[GblId,
Arity=1,
Caf=NoCafRefs,
Str=DmdType <S(S),1*U(U)>,
Unf=OtherCon []] =
\r srt:SRT:[] [w_s6wq]
case w_s6wq of _ [Occ=Dead] {
GHC.Types.I# ww1_s6ws [Occ=Once] -> Main.$wmkList ww1_s6ws;
};
Main.main1
:: GHC.Prim.State# GHC.Prim.RealWorld
-> (# GHC.Prim.State# GHC.Prim.RealWorld, () #)
[GblId, Arity=1, Str=DmdType <S,U>, Unf=OtherCon []] =
\r srt:SRT:[re :-> System.IO.readIO2,
rf :-> Main.$fShowItem_$s$fShowItem,
rh :-> Main.$fShowList_$s$cshowsPrec, ri :-> Main.$s$fShowMaybe,
rj :-> GHC.IO.Handle.FD.stdout, rk :-> GHC.IO.Handle.Text.hPutStr2,
rm :-> System.IO.readIO5, ro :-> Main.main2,
rq :-> System.IO.readIO8, rs :-> GHC.IO.Handle.Text.hGetLine2,
rt :-> GHC.IO.Handle.FD.stdin, ru :-> GHC.IO.Handle.Text.hGetLine4,
rv :-> GHC.IO.Handle.Internals.wantReadableHandle_1,
rR :-> Main.$fShowList_$cshowsPrec] [s_s6wt]
case
GHC.IO.Handle.Internals.wantReadableHandle_1
GHC.IO.Handle.Text.hGetLine4
GHC.IO.Handle.FD.stdin
GHC.IO.Handle.Text.hGetLine2
s_s6wt
of
_ [Occ=Dead]
{ (#,#) ipv_s6wv [Occ=Once*] ipv1_s6ww [Occ=Once] ->
case
Text.ParserCombinators.ReadP.run Main.main2 ipv1_s6ww
of
sat_s6wx
{ __DEFAULT ->
case System.IO.readIO8 sat_s6wx of _ [Occ=Dead] {
[] -> raiseIO# [System.IO.readIO5 ipv_s6wv];
: x_s6wA [Occ=Once!] ds_s6wB [Occ=Once!] ->
case ds_s6wB of _ [Occ=Dead] {
[] ->
let {
lst_s6wD :: Main.List (GHC.Base.Maybe GHC.Types.Int)
[LclId, Str=DmdType] =
\u srt:SRT:[] []
case x_s6wA of _ [Occ=Dead] {
GHC.Types.I# ww1_s6wF [Occ=Once] ->
case Main.$wmkList ww1_s6wF of sat_s6wG {
__DEFAULT ->
Main.$fFunctorList_$cfmap
GHC.Base.Just sat_s6wG;
};
}; } in
let {
sat_s6wH [Occ=Once, Dmd=<L,1*U>] :: GHC.Base.String
[LclId, Str=DmdType] =
\s srt:SRT:[ri :-> Main.$s$fShowMaybe,
rR :-> Main.$fShowList_$cshowsPrec] []
Main.$fShowList_$cshowsPrec
Main.$s$fShowMaybe
GHC.Show.shows22
lst_s6wD
GHC.Types.[];
} in
case
GHC.IO.Handle.Text.hPutStr2
GHC.IO.Handle.FD.stdout sat_s6wH GHC.Types.True ipv_s6wv
of
_ [Occ=Dead]
{ (#,#) ipv2_s6wJ [Occ=Once] _ [Occ=Dead] ->
let {
sat_s6wM [Occ=Once, Dmd=<L,1*U>] :: GHC.Base.String
[LclId, Str=DmdType] =
\s srt:SRT:[ri :-> Main.$s$fShowMaybe,
rR :-> Main.$fShowList_$cshowsPrec] []
case
Main.$fFunctorList_$cfmap GHC.Base.id lst_s6wD
of
sat_s6wL
{ __DEFAULT ->
Main.$fShowList_$cshowsPrec
Main.$s$fShowMaybe
GHC.Show.shows22
sat_s6wL
GHC.Types.[];
};
} in
case
GHC.IO.Handle.Text.hPutStr2
GHC.IO.Handle.FD.stdout
sat_s6wM
GHC.Types.True
ipv2_s6wJ
of
_ [Occ=Dead]
{ (#,#) ipv4_s6wO [Occ=Once] _ [Occ=Dead] ->
let {
sat_s6wR [Occ=Once, Dmd=<L,1*U>]
:: GHC.Base.String
[LclId, Str=DmdType] =
\s srt:SRT:[rf :-> Main.$fShowItem_$s$fShowItem,
rh :-> Main.$fShowList_$s$cshowsPrec] []
case
Main.$fFunctorList_$s$cfmap
lst_s6wD GHC.Prim.coercionToken#
of
sat_s6wQ
{ __DEFAULT ->
Main.$fShowList_$s$cshowsPrec
sat_s6wQ
0#
Main.$fShowItem_$s$fShowItem
GHC.Types.[];
};
} in
GHC.IO.Handle.Text.hPutStr2
GHC.IO.Handle.FD.stdout
sat_s6wR
GHC.Types.True
ipv4_s6wO;
};
};
: _ [Occ=Dead] _ [Occ=Dead] ->
raiseIO# [System.IO.readIO2 ipv_s6wv];
};
};
};
};
Main.main :: GHC.Types.IO ()
[GblId, Arity=1, Str=DmdType <S,U>, Unf=OtherCon []] =
\r srt:SRT:[rx :-> Main.main1] [eta_B1] Main.main1 eta_B1;
Main.main3
:: GHC.Prim.State# GHC.Prim.RealWorld
-> (# GHC.Prim.State# GHC.Prim.RealWorld, () #)
[GblId, Arity=1, Str=DmdType, Unf=OtherCon []] =
\r srt:SRT:[r7 :-> GHC.TopHandler.runMainIO1,
rx :-> Main.main1] [eta_B1]
GHC.TopHandler.runMainIO1 Main.main1 eta_B1;
:Main.main :: GHC.Types.IO ()
[GblId, Arity=1, Str=DmdType, Unf=OtherCon []] =
\r srt:SRT:[r6tG :-> Main.main3] [eta_B1] Main.main3 eta_B1;
Main.Cons
:: forall a_art. a_art -> Main.List a_art -> Main.List a_art
[GblId[DataCon],
Arity=2,
Caf=NoCafRefs,
Str=DmdType <L,U><L,U>m1,
Unf=OtherCon []] =
\r srt:SRT:[] [eta_B2 eta_B1] Main.Cons [eta_B2 eta_B1];
Main.Nil :: forall a_art. Main.List a_art
[GblId[DataCon], Caf=NoCafRefs, Str=DmdType, Unf=OtherCon []] =
NO_CCS Main.Nil! [];
{-# LANGUAGE DeriveFunctor #-}
module Main where
newtype Item a = Item (Maybe a)
deriving (Show)
data List a = Cons !a !(List a) | Nil
deriving (Show, Functor)
mkList :: Int -> List Int
mkList 0 = Nil
mkList i = Cons i (mkList (i - 1))
maybeToItem :: Maybe a -> Item a
maybeToItem = Item
main :: IO ()
main = do
i <- readLn :: IO Int
let lst = fmap Just (mkList i)
print lst
print (fmap id lst)
print (fmap Item lst)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment