summaryrefslogtreecommitdiff
path: root/testsuite/tests/deriving/should_run/drvrun021.hs
blob: e634d1b80e2fe38d3e3f79dd70bdfac4d4fa3118 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
module Main where

class Show a => Foo a where
  op :: a -> a

newtype Moose = MkMoose () deriving (Show, Eq, Ord)

newtype Noose = MkNoose () deriving (Ord)

instance Eq Noose where
  a == b = False        -- Non-standard!

f :: Ord a => a -> Bool
f x = x==x

main = do print (MkNoose () == MkNoose ())      -- Eq Noose
          print (f (MkNoose ()))                -- via Ord Noose
          print (MkMoose () == MkMoose ())      -- Eq Moose
          print (f (MkMoose ()))                -- via Ord Moose
          putStrLn (show (MkMoose ()))          -- Should not use the show () method