packages feed

MicroHs-0.16.0.0: tests/DerivingBuiltin.hs

module DerivingBuiltin (main) where

import Prelude (Bounded, Enum, Eq, Foldable, Functor, Ord, Int, Read, Show, Traversable)
import Data.Data (Data)
import Data.Ix (Ix)
import Data.Typeable (Typeable)

data T a b c = A a | B b | C a Int | D
    deriving (Bounded, Data, Eq, Ord, Read, Show, Typeable)

data Rec a = R { x :: a, y :: Int }
  deriving (Bounded, Data, Eq, Ord, Read, Show, Typeable)

data E = X | Y | Z
    deriving (Bounded, Data, Enum, Eq, Ix, Ord, Read, Show, Typeable)

data U a = U1 | U2 Int | U3 a | U4 a Int (a, a) | U5 [U a]
    deriving (Functor, Foldable, Traversable)

data V a = V a a a
    deriving (Bounded, Data, Eq, Ix, Ord, Read, Show, Typeable)

data These1 f g a
    = This1 (f a)
    | That1 (g a)
    | These1 (f a) (g a)
  deriving (Functor, Foldable, Traversable, Typeable, Data)

main = main