{-# LANGUAGE Haskell2010 #-}


module Foreign.Java.Bindings.HaskellTypes where


data HaskellModule = HaskellModule {
    moduleName :: String,
    moduleFunctions :: [HaskellFunction],
    moduleData :: [HaskellData]
    
  } deriving (Show, Eq)


data HaskellData = HaskellData {
    dataName :: String,
    dataConstructors :: [HaskellConstructor]
    
    
  } deriving (Show, Eq)


data HaskellFunction = HaskellFunction {
    functionName :: String,
    functionArgs :: [HaskellType],
    functionReturn :: HaskellType
    
  } deriving (Show, Eq)


data HaskellConstructor = HaskellConstructor {
    constructorName :: String,
    constructorField :: (String, HaskellType)
    
  } deriving (Show, Eq)


data HaskellType = HaskellType {

  } deriving (Show, Eq)