{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveDataTypeable #-}
module Types where
import Data.Typeable
import GHC.Generics
data RecordType1 =
RecordData11
{ recordField11 :: String
, recordField12 :: Int
, recordField13 :: Double
, recordField14 :: Maybe String
, recordField15 :: RecordType2
, recordField16 :: [String]
, recordField17 :: [Int]
, recordField18 :: [Int]
, recordField19 :: Maybe Int
, recordField1A :: String
}
deriving (Show, Generic)
data RecordType2 =
RecordData21
{ recordField21 :: String
, recordField22 :: Maybe String
}
| RecordData22
{ recordField21 :: String
, recordField22 :: Maybe String
, recordField23 :: Int
}
deriving (Show, Generic, Typeable)
data ProductType1 = ProductData11 String Int Double (Maybe String) ProductType2
deriving (Show, Generic)
data ProductType2 = ProductData21 String (Maybe String)
| ProductData22 String (Maybe String) Int
deriving (Show, Generic, Typeable)
data UnitType1 = UnitData1 | UnitData2 | UnitData3
deriving (Show, Generic, Typeable)
data UnitType2 = UnitData21 | UnitData22 | UnitData23
deriving (Show, Generic, Typeable)
data MixType1 =
MixData11
| MixData12 String (Maybe String)
| MixData13
{ recordField31 :: String
, recordField32 :: Maybe String
, recordField33 :: Int
}
deriving (Show, Generic)