| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Prairie.TH
Description
Helpers for generating instances of the Record type class.
Since: 0.0.1.0
Documentation
mkRecord :: Name -> DecsQ Source #
Create an instance of the Record type class.
data User
= User
{ name :: String
, age :: Int
}
mkRecord ''User
====>
instance Record User where
data Field User a where
UserName :: String
UserAge :: Int
recordFieldLens fl =
case fl of
UserName -> lens name (u n -> u { name = n)
UserAge -> lens age (u n -> u { age = n)
instance SymbolToField "age" User Int where symbolToField = UserName
instance SymbolToField "name" User String where symbolToField = UserAge
If the fields are prefixed with the type's name, this function figures it out and won't duplicate the field.
data User
= User
{ userName :: String
, userAge :: Int
}
mkRecord ''User
====>
instance Record User where
data Field User a where
UserName :: String
UserAge :: Int
recordFieldLens fl =
case fl of
UserName -> lens name (u n -> u { name = n)
UserAge -> lens age (u n -> u { age = n)
instance SymbolToField "name" User Int where symbolToField = UserName
instance SymbolToField "age" User String where symbolToField = UserAge
Since: 0.0.1.0
upperFirst :: String -> String Source #
lowerFirst :: String -> String Source #
compatConP :: Name -> Pat Source #