Safe Haskell | None |
---|
The shared functionality behind Lens.Family.TH and Lens.Family2.TH.
- defaultNameTransform :: String -> Maybe String
- type LensTypeInfo = (Name, [TyVarBndr])
- type ConstructorFieldInfo = (Name, Strict, Type)
- deriveLenses :: (Name -> LensTypeInfo -> ConstructorFieldInfo -> Q [Dec]) -> (String -> Maybe String) -> Name -> Q [Dec]
Documentation
defaultNameTransform :: String -> Maybe StringSource
By default, if the field name begins with an underscore, then the underscore will simply be removed (and the new first character lowercased if necessary).
type LensTypeInfo = (Name, [TyVarBndr])Source
Information about the larger type the lens will operate on.
type ConstructorFieldInfo = (Name, Strict, Type)Source
Information about the smaller type the lens will operate on.
:: (Name -> LensTypeInfo -> ConstructorFieldInfo -> Q [Dec]) | the signature deriver |
-> (String -> Maybe String) | the name transformer |
-> Name | |
-> Q [Dec] |
The true workhorse of lens derivation. This macro is parameterized by a macro that derives signatures, as well as a function that filters and transforms names. Producing Nothing means that a lens should not be generated for the provided name.