schema-0.0.1: src/Data/Schema.hs
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TypeSynonymInstances #-}
module Data.Schema where
import Data.Proxy (Proxy)
data Field = Field
{ fieldName :: String
, fieldType :: Schema
}
deriving (Eq, Show, Read)
data Schema
= SchemaRecord [Field]
| SchemaInt
| SchemaDouble
| SchemaString
deriving (Eq, Show, Read)
class HasSchema a where
schema :: Proxy a -> Schema
instance HasSchema Int where
schema _ = SchemaInt
instance HasSchema Double where
schema _ = SchemaDouble
instance HasSchema String where
schema _ = SchemaString