Skip to content

Instantly share code, notes, and snippets.

@agam
Last active December 19, 2015 15:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save agam/5974455 to your computer and use it in GitHub Desktop.
Save agam/5974455 to your computer and use it in GitHub Desktop.
Haskell Core for an interation example
------------------------------- Core -----------------------------------
Result size = 148
lvl_r1MQ :: Type.Integer
lvl_r1MQ = __integer 0
lgo_r1MR
:: Type.Integer
-> [NaryTree Type.Integer]
-> Type.Integer
lgo_r1MR =
\ (z_atM :: Type.Integer)
(ds_atN :: [NaryTree Type.Integer]) ->
case ds_atN of _ {
[] -> z_atM;
: x_atS xs_atT ->
lgo_r1MR
(Type.plusInteger z_atM (main_$snarySum x_atS))
xs_atT
}
main_$snarySum [Occ=LoopBreaker]
:: NaryTree Type.Integer
-> Type.Integer
main_$snarySum =
\ (ds_dtA :: NaryTree Type.Integer) ->
case ds_dtA of _ {
NaryLeaf x_aad -> x_aad;
NaryBranch b_aae -> lgo_r1MR lvl_r1MQ b_aae
}
main_$sbinarySum [Occ=LoopBreaker]
:: BinaryTree Type.Integer
-> Type.Integer
main_$sbinarySum =
\ (ds_dtD :: BinaryTree Type.Integer) ->
case ds_dtD of _ {
BinaryLeaf x_a9T -> x_a9T;
BinaryBranch a_a9U b_a9V ->
Type.plusInteger
(main_$sbinarySum a_a9U) (main_$sbinarySum b_a9V)
}
main14 :: Type.Integer
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [] 100 0}]
main14 = __integer 4
main13 :: NaryTree Type.Integer
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [] 10 110}]
main13 = NaryLeaf @ Type.Integer main14
main12 :: Type.Integer
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [] 100 0}]
main12 = __integer 5
main11 :: NaryTree Type.Integer
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [] 10 110}]
main11 = NaryLeaf @ Type.Integer main12
main10 :: Type.Integer
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [] 100 0}]
main10 = __integer 6
main9 :: NaryTree Type.Integer
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [] 10 110}]
main9 = NaryLeaf @ Type.Integer main10
main8 :: [NaryTree Type.Integer]
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [] 10 120}]
main8 =
:
@ (NaryTree Type.Integer)
main9
([] @ (NaryTree Type.Integer))
main7 :: [NaryTree Type.Integer]
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [] 10 120}]
main7 =
:
@ (NaryTree Type.Integer) main11 main8
main6 :: [NaryTree Type.Integer]
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [] 10 120}]
main6 =
:
@ (NaryTree Type.Integer) main13 main7
main5 :: NaryTree Type.Integer
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [] 10 110}]
main5 = NaryBranch @ Type.Integer main6
main4 :: Type.Integer
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=False, Expandable=False,
Guidance=IF_ARGS [] 20 0}]
main4 = main_$snarySum main5
main3 :: String
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=False, Expandable=False,
Guidance=IF_ARGS [] 40 0}]
main3 =
$w$cshowsPrec 0 main4 ([] @ Char)
main2 :: [Char]
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=False, Expandable=False,
Guidance=IF_ARGS [] 70 0}]
main2 =
unpackAppendCString# "NarySum = " main3
main20 :: BinaryTree Type.Integer
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [] 10 110}]
main20 =
BinaryLeaf @ Type.Integer main14
main19 :: BinaryTree Type.Integer
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [] 10 110}]
main19 =
BinaryLeaf @ Type.Integer main12
main18 :: BinaryTree Type.Integer
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [] 10 120}]
main18 =
BinaryBranch
@ Type.Integer main20 main19
main17 :: Type.Integer
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=False, Expandable=False,
Guidance=IF_ARGS [] 20 0}]
main17 = main_$sbinarySum main18
main16 :: String
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=False, Expandable=False,
Guidance=IF_ARGS [] 40 0}]
main16 =
$w$cshowsPrec
0 main17 ([] @ Char)
main15 :: [Char]
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=False, Expandable=False,
Guidance=IF_ARGS [] 70 0}]
main15 =
unpackAppendCString# "BinarySum = " main16
main1
:: State# RealWorld
-> (# State# RealWorld, () #)
[GblId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 110 0}]
main1 =
\ (eta_Xk :: State# RealWorld) ->
case Handle.Text.hPutStr2
Handle.FD.stdout main15 True eta_Xk
of _ { (# new_s_aPj, _ #) ->
Handle.Text.hPutStr2
Handle.FD.stdout main2 True new_s_aPj
}
main :: IO ()
[GblId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=True)}]
main =
main1
main21
:: State# RealWorld
-> (# State# RealWorld, () #)
[GblId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 30 0}]
main21 =
\ (eta_Xn :: State# RealWorld) ->
runMainIO1
@ ()
(main1
)
eta_Xn
:main :: IO ()
[GblId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=True)}]
:main =
main21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment