module Linguistics.Types where
import Data.Text (Text)
import GHC.Generics (Generic)
import Data.Serialize (Serialize)
import Data.Binary (Binary)
import Data.Aeson (FromJSON,ToJSON)
import Data.Serialize.Text ()
newtype Concept = Concept { getConcept :: Text }
  deriving (Eq,Ord,Generic)
instance Binary     Concept
instance Serialize  Concept
instance FromJSON   Concept
instance ToJSON     Concept
newtype Counterpart = Counterpart { getCountpart :: Text }
  deriving (Eq,Ord,Generic)
instance Binary     Counterpart
instance Serialize  Counterpart
instance FromJSON   Counterpart
instance ToJSON     Counterpart
newtype IPA = IPA { getIPA :: Text }
  deriving (Eq,Ord,Generic)
instance Binary     IPA
instance Serialize  IPA
instance FromJSON   IPA
instance ToJSON     IPA
newtype Doculect = Doculect { getDoculect :: Text }
  deriving (Eq,Ord,Generic)
instance Binary     Doculect
instance Serialize  Doculect
instance FromJSON   Doculect
instance ToJSON     Doculect