{-# LANGUAGE UnboxedTuples #-}

module Main where

type Null = (# #)

{-# NOINLINE showNull #-}
showNull :: Null -> String
showNull (# #) = "(# #)"

{-# NOINLINE showNullPair #-}
showNullPair :: (# Null, Null #) -> String
showNullPair (# n1, n2 #) = "(# " ++ showNull n1 ++ ", " ++ showNull n2 ++ " #)"

main :: IO ()
main = do
    putStrLn (showNullPair (# (# #), (# #) #))