{-# LANGUAGE DeriveGeneric #-} module ADTs where import GHC.Generics data SoCD = Str String | MkCD Char Double deriving (Generic, Show) data Expr = I{int :: Integer} | Expr :^ Expr deriving (Generic, Show) infixr 8 :^ data Unit = MkUnit deriving (Generic, Show) data Empty deriving Generic