lens-family-th-0.1.0.0: Template Haskell to generate lenses for lens-family and lens-family-core

Safe HaskellNone

Lens.Family.THCore

Description

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

Synopsis

Documentation

defaultNameTransform :: String -> 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). Otherwise, the suffix Lens will be added.

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.

deriveLensesSource

Arguments

:: (Name -> LensTypeInfo -> ConstructorFieldInfo -> Q [Dec])

the signature deriver

-> (String -> 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 transforms names.