summaryrefslogtreecommitdiff
path: root/testsuite/tests/ghc-regress/deriving/should_run/drvrun003.hs
blob: bb7486159e459dc6e19318f892a5b619faf2359a (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
-- !!! Deriving Show/Read for nullary constructors.
module Main(main) where

data A = B | C deriving ( Show, Read )

data Opt = N | Y A deriving (Show, Read)

x = Y B

{-
 If the Haskell report's specification of how Show instances
 are to be derived is followed to the letter, the code for
 a nullary constructor would put parens around the constructor
 when (showsPrec 10) is used. This would cause

      Y A

 to be showed as
 
      Y (A)

 Overkill, so ghc's derived Show code treats nullary
 constructors specially.
-}

main = do
  print x
  print ((read (show x))::Opt)
  print ((read "Y (B)")::Opt)