blob: add8aa73dfba78225683ae7743c6b2c32c09fb1e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
{-# LANGUAGE UnboxedSums, MagicHash, BangPatterns, UnboxedTuples #-}
module Main where
import GHC.Prim
import GHC.Types
import Data.Void (Void)
import System.Mem (performMajorGC)
showAlt0 :: (# Void# | (# #) | () #) -> String
showAlt0 (# | (# #) | #) = "(# | (# #) | #)"
showAlt0 (# | | () #) = "(# | | () #)"
showAlt1 :: (# Void | Float# #) -> String
showAlt1 (# _ | #) = "(# Void | #)"
showAlt1 (# | f #) = "(# | " ++ show (F# f) ++ "# #)"
data D = D { f1 :: (# Void# | (# #) | () #)
, f2 :: (# Void | Float# #)
}
showD :: D -> String
showD (D f1 f2) = showAlt0 f1 ++ "\n" ++ showAlt1 f2
main :: IO ()
main = do
putStrLn (showAlt0 (# | (# #) | #))
putStrLn (showAlt0 (# | | () #))
putStrLn (showAlt1 (# undefined | #))
putStrLn (showAlt1 (# | 8.1# #))
putStrLn (showD (D (# | (# #) | #) (# | 1.2# #)))
performMajorGC
|