ToStg Bool Source | >>> ppr (toStg "bool" True)
bool = \ -> True
|
ToStg Int Source | Same as the Integer instance, but makes for shorter type annotations |
ToStg Integer Source | >>> ppr (toStg "int" (1 :: Integer))
int = \ -> Int# 1#
|
ToStg () Source | >>> ppr (toStg "unit" ())
unit = \ -> Unit
|
ToStg a => ToStg [a] Source | >>> ppr (toStg "list" ([] :: [Int]))
list = \ => nil;
nil = \ -> Nil
>>> ppr (toStg "list" [1, 2, 3 :: Int])
list = \ =>
letrec __0_value = \ -> Int# 1#;
__1_cons = \(__1_value __2_cons) -> Cons __1_value __2_cons;
__1_value = \ -> Int# 2#;
__2_cons = \(__2_value) -> Cons __2_value nil;
__2_value = \ -> Int# 3#
in Cons __0_value __1_cons;
nil = \ -> Nil
|
ToStg a => ToStg (Maybe a) Source | >>> ppr (toStg "maybe" (Nothing :: Maybe Int))
maybe = \ => nothing;
nothing = \ -> Nothing
>>> ppr (toStg "maybe" (Just 1 :: Maybe Int))
maybe = \ =>
let __justVal = \ -> Int# 1#
in Just __justVal
|
(ToStg a, ToStg b) => ToStg (Either a b) Source | >>> ppr (toStg "either" (Left 1 :: Either Int [Int]))
either = \ =>
let __leftval = \ -> Int# 1#
in Left __leftval
>>> ppr (toStg "either" (Right 2 :: Either [Int] Int))
either = \ =>
let __rightval = \ -> Int# 2#
in Right __rightval
|
(ToStg a, ToStg b) => ToStg (a, b) Source | >>> ppr (toStg "pair" ((1,2) :: (Int,Int)))
pair = \ =>
let __fst = \ -> Int# 1#;
__snd = \ -> Int# 2#
in Pair __fst __snd
|
(ToStg a, ToStg b, ToStg c) => ToStg (a, b, c) Source | >>> ppr (toStg "triple" ((1,2,3) :: (Int,Int,Int)))
triple = \ =>
let __x = \ -> Int# 1#;
__y = \ -> Int# 2#;
__z = \ -> Int# 3#
in Triple __x __y __z
|
(ToStg a, ToStg b, ToStg c, ToStg d) => ToStg (a, b, c, d) Source | >>> ppr (toStg "quadruple" ((1,2,3,4) :: (Int,Int,Int,Int)))
quadruple = \ =>
let __w = \ -> Int# 1#;
__x = \ -> Int# 2#;
__y = \ -> Int# 3#;
__z = \ -> Int# 4#
in Quadruple __w __x __y __z
|
(ToStg a, ToStg b, ToStg c, ToStg d, ToStg e) => ToStg (a, b, c, d, e) Source | >>> ppr (toStg "quintuple" ((1,2,3,4,5) :: (Int,Int,Int,Int,Int)))
quintuple = \ =>
let __v = \ -> Int# 1#;
__w = \ -> Int# 2#;
__x = \ -> Int# 3#;
__y = \ -> Int# 4#;
__z = \ -> Int# 5#
in Quintuple __v __w __x __y __z
|