Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
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 #