{-# LANGUAGE TupleSections, UnboxedTuples #-}
module Main where

a :: Int -> (Int, Bool)
a = ( , True)

b :: Bool -> (Int, Bool)
b = (1, )

c :: a -> (a, Bool)
c = (, True || False)

d = (,1,)


e = (# , True #)

f = (# 1, #)

g = (# , True || False #)

h = (# ,1, #)


unchanged :: a -> (# Int #)
unchanged _binding = (# #) 1


main = do
    print (a 1, b False, c "Hello", c 1337, d "Yeah" "Baby")
    case e 1 of { (# x1, x2 #) ->
    case f False of { (# x3, x4 #) ->
    case g "Hello" of { (# x5, x6 #) ->
    case g 1337 of { (# x7, x8 #) ->
    case h "Yeah" "Baby" of { (# x9, x10, x11 #) ->
    print (x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) }}}}}

