lens-family-th- Generate lens-family style lenses

Safe HaskellNone



The shared functionality behind Lens.Family.TH and Lens.Family2.TH.



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.