lens-4.13: Lenses, Folds and Traversals

Copyright | (C) 2014-2015 Edward Kmett, (C) 2014 Eric Mertens
License | BSD-style (see the file LICENSE)
Maintainer | Edward Kmett <ekmett@gmail.com>
Stability | experimental
Portability | non-portable
Safe Haskell | Trustworthy
Language | Haskell98

Control.Lens.Internal.FieldTH

Description

Synopsis

- data LensRules = LensRules {
  - _simpleLenses :: Bool
  - _generateSigs :: Bool
  - _generateClasses :: Bool
  - _allowIsos :: Bool
  - _allowUpdates :: Bool
  - _lazyPatterns :: Bool
  - _fieldToDef :: Name -> [Name] -> Name -> [DefName]
  - _classyLenses :: Name -> Maybe (Name, Name)
  }
- data DefName
  - = TopName Name
  - | MethodName Name Name
- makeFieldOptics :: LensRules -> Name -> DecsQ
- makeFieldOpticsForDec :: LensRules -> Dec -> DecsQ

# Documentation

data LensRules Source

Constructors

LensRules |

Fields

_simpleLenses :: Bool
_generateSigs :: Bool
_generateClasses :: Bool
_allowIsos :: Bool
_allowUpdates :: Bool

  Allow LensTraversal (otherwise GetterFold)

_lazyPatterns :: Bool
_fieldToDef :: Name -> [Name] -> Name -> [DefName]

  Type Name -> Field Names -> Target Field Name -> Definition Names

_classyLenses :: Name -> Maybe (Name, Name)

data DefName Source

Name to give to generated field optics.

Constructors

TopName Name | Simple top-level definiton name
MethodName Name Name | makeFields-style class name and method name

Instances

Eq DefName Source |
Ord DefName Source |
Show DefName Source |

makeFieldOptics :: LensRules -> Name -> DecsQ Source

Compute the field optics for the type identified by the given type name. Lenses will be computed when possible, Traversals otherwise.

makeFieldOpticsForDec :: LensRules -> Dec -> DecsQ Source