lens-5.2.3: Lenses, Folds and Traversals

Copyright | (C) 2012-2016 Edward Kmett
License | BSD-style (see the file LICENSE)
Maintainer | Edward Kmett <ekmett@gmail.com>
Stability | experimental
Portability | TemplateHaskell
Safe Haskell | Trustworthy
Language | Haskell2010

Language.Haskell.TH.Lens

Contents

- Traversals
- Lenses
  - Loc Lenses
  - FunDep Lenses
  - Match Lenses
  - Fixity Lenses
  - Clause Lenses
  - FieldExp Lenses
  - FieldPat Lenses
  - TySynEqn Lenses
  - InjectivityAnn Lenses
  - TypeFamilyHead Lenses
  - Bang Lenses
  - DerivClause Lenses
- Prisms
  - Info Prisms
  - Dec Prisms
  - PatSynDir Prisms
  - PatSynArgs Prisms
  - Con Prisms
  - Overlap Prisms
  - SourceUnpackedness Prisms
  - SourceStrictness Prisms
  - DecidedStrictness Prisms
  - Foreign Prisms
  - Callconv Prisms
  - Safety Prisms
  - Pragma Prisms
  - Inline Prisms
  - RuleMatch Prisms
  - Phases Prisms
  - RuleBndr Prisms
  - AnnTarget Prisms
  - FunDep Prisms TODO make a lens
  - FixityDirection Prisms
  - Exp Prisms
  - Body Prisms
  - Guard Prisms
  - Stmt Prisms
  - Range Prisms
  - Lit Prisms
  - Pat Prisms
  - Type Prisms
  - Specificity Prisms
  - TyVarBndr Prisms
  - FamilyResultSig Prisms
  - TyLit Prisms
  - Role Prisms
  - DerivStrategy Prisms

Description

Lenses, Prisms, and Traversals for working with Template Haskell.

Beware that the API offered in this module is subject to change, as it mirrors the API exposed by the `template-haskell` package, which frequently changes between different releases of GHC. An effort is made to identify the functions in this module which have different type signatures when compiled with different versions of `template-haskell`.

Synopsis

- class HasName t where
  - name :: Lens' t Name
- class HasTypes t where
  - types :: Traversal' t Type
- class HasTypeVars t where
  - typeVarsEx :: Set Name -> Traversal' t Name
- class SubstType t where
  - substType :: Map Name Type -> t -> t
- typeVars :: HasTypeVars t => Traversal' t Name
- substTypeVars :: HasTypeVars t => Map Name Name -> t -> t
- conFields :: Traversal' Con BangType
- conNamedFields :: Traversal' Con VarBangType
- locFileName :: Lens' Loc String
- locPackage :: Lens' Loc String
- locModule :: Lens' Loc String
- locStart :: Lens' Loc CharPos
- locEnd :: Lens' Loc CharPos
- funDepInputs :: Lens' FunDep [Name]
- funDepOutputs :: Lens' FunDep [Name]
- matchPattern :: Lens' Match Pat
- matchBody :: Lens' Match Body
- matchDeclarations :: Lens' Match [Dec]
- fixityPrecedence :: Lens' Fixity Int
- fixityDirection :: Lens' Fixity FixityDirection
- clausePattern :: Lens' Clause [Pat]
- clauseBody :: Lens' Clause Body
- clauseDecs :: Lens' Clause [Dec]
- fieldExpName :: Lens' FieldExp Name
- fieldExpExpression :: Lens' FieldExp Exp
- fieldPatName :: Lens' FieldPat Name
- fieldPatPattern :: Lens' FieldPat Pat
- tySynEqnLHS :: Lens' TySynEqn Type
- tySynEqnPatterns :: Lens' TySynEqn [Type]
- tySynEqnResult :: Lens' TySynEqn Type
- injectivityAnnOutput :: Lens' InjectivityAnn Name
- injectivityAnnInputs :: Lens' InjectivityAnn [Name]
- typeFamilyHeadName :: Lens' TypeFamilyHead Name
- typeFamilyHeadTyVarBndrs :: Lens' TypeFamilyHead [TyVarBndrVis]
- typeFamilyHeadResultSig :: Lens' TypeFamilyHead FamilyResultSig
- typeFamilyHeadInjectivityAnn :: Lens' TypeFamilyHead (Maybe InjectivityAnn)
- bangSourceUnpackedness :: Lens' Bang SourceUnpackedness
- bangSourceStrictness :: Lens' Bang SourceStrictness
- derivClauseStrategy :: Lens' DerivClause (Maybe DerivStrategy)
- derivClauseCxt :: Lens' DerivClause Cxt
- _ClassI :: Prism' Info (Dec, [InstanceDec])
- _ClassOpI :: Prism' Info (Name, Type, ParentName)
- _TyConI :: Prism' Info Dec
- _FamilyI :: Prism' Info (Dec, [InstanceDec])
- _PrimTyConI :: Prism' Info (Name, Arity, Unlifted)
- _DataConI :: Prism' Info (Name, Type, ParentName)
- _VarI :: Prism' Info (Name, Type, Maybe Dec)
- _TyVarI :: Prism' Info (Name, Type)
- _PatSynI :: Prism' Info (Name, PatSynType)
- _FunD :: Prism' Dec (Name, [Clause])
- _ValD :: Prism' Dec (Pat, Body, [Dec])
- _DataD :: DataPrism' [TyVarBndrVis] [Con]
- _NewtypeD :: DataPrism' [TyVarBndrVis] Con
- _TySynD :: Prism' Dec (Name, [TyVarBndrVis], Type)
- _ClassD :: Prism' Dec (Cxt, Name, [TyVarBndrVis], [FunDep], [Dec])
- _InstanceD :: Prism' Dec (Maybe Overlap, Cxt, Type, [Dec])
- _SigD :: Prism' Dec (Name, Type)
- _ForeignD :: Prism' Dec Foreign
- _InfixD :: Prism' Dec (Fixity, Name)
- _PragmaD :: Prism' Dec Pragma
- _DataInstD :: Prism' Dec (Cxt, Maybe [TyVarBndrUnit], Type, Maybe Kind, [Con], [DerivClause])
- _NewtypeInstD :: Prism' Dec (Cxt, Maybe [TyVarBndrUnit], Type, Maybe Kind, Con, [DerivClause])
- _TySynInstD :: Prism' Dec TySynEqn
- _ClosedTypeFamilyD :: Prism' Dec (TypeFamilyHead, [TySynEqn])
- _RoleAnnotD :: Prism' Dec (Name, [Role])
- _StandaloneDerivD :: Prism' Dec (Maybe DerivStrategy, Cxt, Type)
- _DefaultSigD :: Prism' Dec (Name, Type)
- _DataFamilyD :: Prism' Dec (Name, [TyVarBndrVis], Maybe Kind)
- _OpenTypeFamilyD :: Prism' Dec TypeFamilyHead
- _PatSynD :: Prism' Dec (Name, PatSynArgs, PatSynDir, Pat)
- _PatSynSigD :: Prism' Dec (Name, PatSynType)
- _ImplicitParamBindD :: Prism' Dec (String, Exp)
- _DefaultD :: Prism' Dec [Type]
- _Unidir :: Prism' PatSynDir ()
- _ImplBidir :: Prism' PatSynDir ()
- _ExplBidir :: Prism' PatSynDir [Clause]
- _PrefixPatSyn :: Prism' PatSynArgs [Name]
- _InfixPatSyn :: Prism' PatSynArgs (Name, Name)
- _RecordPatSyn :: Prism' PatSynArgs [Name]
- _NormalC :: Prism' Con (Name, [BangType])
- _RecC :: Prism' Con (Name, [VarBangType])
- _InfixC :: Prism' Con (BangType, Name, BangType)
- _ForallC :: Prism' Con ([TyVarBndrSpec], Cxt, Con)
- _GadtC :: Prism' Con ([Name], [BangType], Type)
- _RecGadtC :: Prism' Con ([Name], [VarBangType], Type)
- _Overlappable :: Prism' Overlap ()
- _Overlapping :: Prism' Overlap ()
- _Overlaps :: Prism' Overlap ()
- _Incoherent :: Prism' Overlap ()
- _NoSourceUnpackedness :: Prism' SourceUnpackedness ()
- _SourceNoUnpack :: Prism' SourceUnpackedness ()
- _SourceUnpack :: Prism' SourceUnpackedness ()
- _NoSourceStrictness :: Prism' SourceStrictness ()
- _SourceLazy :: Prism' SourceStrictness ()
- _SourceStrict :: Prism' SourceStrictness ()
- _DecidedLazy :: Prism' DecidedStrictness ()
- _DecidedStrict :: Prism' DecidedStrictness ()
- _DecidedUnpack :: Prism' DecidedStrictness ()
- _ImportF :: Prism' Foreign (Callconv, Safety, String, Name, Type)
- _ExportF :: Prism' Foreign (Callconv, String, Name, Type)
- _CCall :: Prism' Callconv ()
- _StdCall :: Prism' Callconv ()
- _CApi :: Prism' Callconv ()
- _Prim :: Prism' Callconv ()
- _JavaScript :: Prism' Callconv ()
- _Unsafe :: Prism' Safety ()
- _Safe :: Prism' Safety ()
- _Interruptible :: Prism' Safety ()
- _InlineP :: Prism' Pragma (Name, Inline, RuleMatch, Phases)
- _SpecialiseP :: Prism' Pragma (Name, Type, Maybe Inline, Phases)
- _SpecialiseInstP :: Prism' Pragma Type
- _RuleP :: Prism' Pragma (String, Maybe [TyVarBndrUnit], [RuleBndr], Exp, Exp, Phases)
- _AnnP :: Prism' Pragma (AnnTarget, Exp)
- _LineP :: Prism' Pragma (Int, String)
- _CompleteP :: Prism' Pragma ([Name], Maybe Name)
- _OpaqueP :: Prism' Pragma Name
- _NoInline :: Prism' Inline ()
- _Inline :: Prism' Inline ()
- _Inlinable :: Prism' Inline ()
- _ConLike :: Prism' RuleMatch ()
- _FunLike :: Prism' RuleMatch ()
- _AllPhases :: Prism' Phases ()
- _FromPhase :: Prism' Phases Int
- _BeforePhase :: Prism' Phases Int
- _RuleVar :: Prism' RuleBndr Name
- _TypedRuleVar :: Prism' RuleBndr (Name, Type)
- _ModuleAnnotation :: Prism' AnnTarget ()
- _TypeAnnotation :: Prism' AnnTarget Name
- _ValueAnnotation :: Prism' AnnTarget Name
- _FunDep :: Iso' FunDep ([Name], [Name])
- _InfixL :: Prism' FixityDirection ()
- _InfixR :: Prism' FixityDirection ()
- _InfixN :: Prism' FixityDirection ()
- _VarE :: Prism' Exp Name
- _ConE :: Prism' Exp Name
- _LitE :: Prism' Exp Lit
- _AppE :: Prism' Exp (Exp, Exp)
- _AppTypeE :: Prism' Exp (Exp, Type)
- _InfixE :: Prism' Exp (Maybe Exp, Exp, Maybe Exp)
- _UInfixE :: Prism' Exp (Exp, Exp, Exp)
- _ParensE :: Prism' Exp Exp
- _LamE :: Prism' Exp ([Pat], Exp)
- _LamCaseE :: Prism' Exp [Match]
- _TupE :: Prism' Exp [Maybe Exp]
- _UnboxedTupE :: Prism' Exp [Maybe Exp]
- _UnboxedSumE :: Prism' Exp (Exp, SumAlt, SumArity)
- _CondE :: Prism' Exp (Exp, Exp, Exp)
- _MultiIfE :: Prism' Exp [(Guard, Exp)]
- _LetE :: Prism' Exp ([Dec], Exp)
- _CaseE :: Prism' Exp (Exp, [Match])
- _DoE :: Prism' Exp (Maybe ModName, [Stmt])
- _CompE :: Prism' Exp [Stmt]
- _ArithSeqE :: Prism' Exp Range
- _ListE :: Prism' Exp [Exp]
- _SigE :: Prism' Exp (Exp, Type)
- _RecConE :: Prism' Exp (Name, [FieldExp])
- _RecUpdE :: Prism' Exp (Exp, [FieldExp])
- _StaticE :: Prism' Exp Exp
- _UnboundVarE :: Prism' Exp Name
- _LabelE :: Prism' Exp String
- _MDoE :: Prism' Exp (Maybe ModName, [Stmt])
- _ImplicitParamVarE :: Prism' Exp String
- _GetFieldE :: Prism' Exp (Exp, String)
- _ProjectionE :: Prism' Exp (NonEmpty String)
- _LamCasesE :: Prism' Exp [Clause]
- _GuardedB :: Prism' Body [(Guard, Exp)]
- _NormalB :: Prism' Body Exp
- _NormalG :: Prism' Guard Exp
- _PatG :: Prism' Guard [Stmt]
- _BindS :: Prism' Stmt (Pat, Exp)
- _LetS :: Prism' Stmt [Dec]
- _NoBindS :: Prism' Stmt Exp
- _ParS :: Prism' Stmt [[Stmt]]
- _RecS :: Prism' Stmt [Stmt]
- _FromR :: Prism' Range Exp
- _FromThenR :: Prism' Range (Exp, Exp)
- _FromToR :: Prism' Range (Exp, Exp)
- _FromThenToR :: Prism' Range (Exp, Exp, Exp)
- _CharL :: Prism' Lit Char
- _StringL :: Prism' Lit String
- _IntegerL :: Prism' Lit Integer
- _RationalL :: Prism' Lit Rational
- _IntPrimL :: Prism' Lit Integer
- _WordPrimL :: Prism' Lit Integer
- _FloatPrimL :: Prism' Lit Rational
- _DoublePrimL :: Prism' Lit Rational
- _StringPrimL :: Prism' Lit [Word8]
- _CharPrimL :: Prism' Lit Char
- _BytesPrimL :: Prism' Lit Bytes
- _LitP :: Prism' Pat Lit
- _VarP :: Prism' Pat Name
- _TupP :: Prism' Pat [Pat]
- _UnboxedTupP :: Prism' Pat [Pat]
- _UnboxedSumP :: Prism' Pat (Pat, SumAlt, SumArity)
- _ConP :: Prism' Pat (Name, [Type], [Pat])
- _InfixP :: Prism' Pat (Pat, Name, Pat)
- _UInfixP :: Prism' Pat (Pat, Name, Pat)
- _ParensP :: Prism' Pat Pat
- _TildeP :: Prism' Pat Pat
- _BangP :: Prism' Pat Pat
- _AsP :: Prism' Pat (Name, Pat)
- _WildP :: Prism' Pat ()
- _RecP :: Prism' Pat (Name, [FieldPat])
- _ListP :: Prism' Pat [Pat]
- _SigP :: Prism' Pat (Pat, Type)
- _ViewP :: Prism' Pat (Exp, Pat)
- _ForallT :: Prism' Type ([TyVarBndrSpec], Cxt, Type)
- _AppT :: Prism' Type (Type, Type)
- _SigT :: Prism' Type (Type, Kind)
- _VarT :: Prism' Type Name
- _ConT :: Prism' Type Name
- _PromotedT :: Prism' Type Name
- _TupleT :: Prism' Type Int
- _UnboxedTupleT :: Prism' Type Int
- _UnboxedSumT :: Prism' Type SumArity
- _ArrowT :: Prism' Type ()
- _EqualityT :: Prism' Type ()
- _ListT :: Prism' Type ()
- _PromotedTupleT :: Prism' Type Int
- _PromotedNilT :: Prism' Type ()
- _PromotedConsT :: Prism' Type ()
- _StarT :: Prism' Type ()
- _ConstraintT :: Prism' Type ()
- _LitT :: Prism' Type TyLit
- _InfixT :: Prism' Type (Type, Name, Type)
- _UInfixT :: Prism' Type (Type, Name, Type)
- _ParensT :: Prism' Type Type
- _WildCardT :: Prism' Type ()
- _AppKindT :: Prism' Type (Type, Kind)
- _ImplicitParamT :: Prism' Type (String, Type)
- _ForallVisT :: Prism' Type ([TyVarBndrUnit], Type)
- _MulArrowT :: Prism' Type ()
- _PromotedInfixT :: Prism' Type (Type, Name, Type)
- _PromotedUInfixT :: Prism' Type (Type, Name, Type)
- _SpecifiedSpec :: Prism' Specificity ()
- _InferredSpec :: Prism' Specificity ()
- _PlainTV :: Prism' (TyVarBndr flag) (Name, flag)
- _KindedTV :: Prism' (TyVarBndr flag) (Name, flag, Kind)
- _NoSig :: Prism' FamilyResultSig ()
- _KindSig :: Prism' FamilyResultSig Kind
- _TyVarSig :: Prism' FamilyResultSig TyVarBndrUnit
- _NumTyLit :: Prism' TyLit Integer
- _StrTyLit :: Prism' TyLit String
- _CharTyLit :: Prism' TyLit Char
- _NominalR :: Prism' Role ()
- _RepresentationalR :: Prism' Role ()
- _PhantomR :: Prism' Role ()
- _InferR :: Prism' Role ()
- _StockStrategy :: Prism' DerivStrategy ()
- _AnyclassStrategy :: Prism' DerivStrategy ()
- _NewtypeStrategy :: Prism' DerivStrategy ()

# Traversals

class HasName t where Source #

Has a `Name`

Methods

name :: Lens' t Name Source #

Extract (or modify) the `Name` of something

#### Instances

Instances details

HasName Con Source # | On `template-haskell-2.11.0.0` or later, if a `GadtC` or `RecGadtC` has multiple `Name`s, the leftmost `Name` will be chosen.
Instance details Defined in Language.Haskell.TH.Lens Methods name :: Lens' Con Name Source #
HasName Foreign Source # |
Instance details Defined in Language.Haskell.TH.Lens Methods name :: Lens' Foreign Name Source #
HasName InjectivityAnn Source # |
Instance details Defined in Language.Haskell.TH.Lens Methods name :: Lens' InjectivityAnn Name Source #
HasName Name Source # |
Instance details Defined in Language.Haskell.TH.Lens Methods name :: Lens' Name Name Source #
HasName RuleBndr Source # |
Instance details Defined in Language.Haskell.TH.Lens Methods name :: Lens' RuleBndr Name Source #
HasName TypeFamilyHead Source # |
Instance details Defined in Language.Haskell.TH.Lens Methods name :: Lens' TypeFamilyHead Name Source #
HasName (TyVarBndr_ flag) Source # |
Instance details Defined in Language.Haskell.TH.Lens Methods name :: Lens' (TyVarBndr_ flag) Name Source #

class HasTypes t where Source #

Contains some amount of `Type`s inside

Methods

types :: Traversal' t Type Source #

Traverse all the types

#### Instances

Instances details

HasTypes Con Source # |
Instance details Defined in Language.Haskell.TH.Lens Methods types :: Traversal' Con Type Source #
HasTypes Foreign Source # |
Instance details Defined in Language.Haskell.TH.Lens Methods types :: Traversal' Foreign Type Source #
HasTypes TySynEqn Source # |
Instance details Defined in Language.Haskell.TH.Lens Methods types :: Traversal' TySynEqn Type Source #
HasTypes Type Source # |
Instance details Defined in Language.Haskell.TH.Lens Methods types :: Traversal' Type Type Source #
HasTypes t => HasTypes [t] Source # |
Instance details Defined in Language.Haskell.TH.Lens Methods types :: Traversal' [t] Type Source #

class HasTypeVars t where Source #

Provides for the extraction of free type variables, and alpha renaming.

Methods

typeVarsEx :: Set Name -> Traversal' t Name Source #

When performing substitution into this traversal you're not allowed to substitute in a name that is bound internally or you'll violate the `Traversal` laws, when in doubt generate your names with `newName`.

#### Instances

Instances details

HasTypeVars Con Source # |
Instance details Defined in Language.Haskell.TH.Lens Methods typeVarsEx :: Set Name -> Traversal' Con Name Source #
HasTypeVars Name Source # |
Instance details Defined in Language.Haskell.TH.Lens Methods typeVarsEx :: Set Name -> Traversal' Name Name Source #
HasTypeVars Type Source # |
Instance details Defined in Language.Haskell.TH.Lens Methods typeVarsEx :: Set Name -> Traversal' Type Name Source #
HasTypeVars (TyVarBndr_ flag) Source # |
Instance details Defined in Language.Haskell.TH.Lens Methods typeVarsEx :: Set Name -> Traversal' (TyVarBndr_ flag) Name Source #
HasTypeVars t => HasTypeVars (Maybe t) Source # |
Instance details Defined in Language.Haskell.TH.Lens Methods typeVarsEx :: Set Name -> Traversal' (Maybe t) Name Source #
HasTypeVars t => HasTypeVars [t] Source # |
Instance details Defined in Language.Haskell.TH.Lens Methods typeVarsEx :: Set Name -> Traversal' [t] Name Source #

class SubstType t where Source #

Provides substitution for types

Methods

substType :: Map Name Type -> t -> t Source #

Perform substitution for types

#### Instances

Instances details

SubstType Type Source # |
Instance details Defined in Language.Haskell.TH.Lens Methods substType :: Map Name Type -> Type -> Type Source #
SubstType t => SubstType [t] Source # |
Instance details Defined in Language.Haskell.TH.Lens Methods substType :: Map Name Type -> [t] -> [t] Source #

typeVars :: HasTypeVars t => Traversal' t Name Source #

Traverse free type variables

substTypeVars :: HasTypeVars t => Map Name Name -> t -> t Source #

Substitute using a map of names in for free type variables

conFields :: Traversal' Con BangType Source #

Provides a `Traversal` of the types of each field of a constructor.

conNamedFields :: Traversal' Con VarBangType Source #

`Traversal` of the types of the named fields of a constructor.

# Lenses

## Loc Lenses

locFileName :: Lens' Loc String Source #

locPackage :: Lens' Loc String Source #

locModule :: Lens' Loc String Source #

locStart :: Lens' Loc CharPos Source #

locEnd :: Lens' Loc CharPos Source #

## FunDep Lenses

funDepInputs :: Lens' FunDep [Name] Source #

funDepOutputs :: Lens' FunDep [Name] Source #

## Match Lenses

matchPattern :: Lens' Match Pat Source #

matchBody :: Lens' Match Body Source #

matchDeclarations :: Lens' Match [Dec] Source #

## Fixity Lenses

fixityPrecedence :: Lens' Fixity Int Source #

fixityDirection :: Lens' Fixity FixityDirection Source #

## Clause Lenses

clausePattern :: Lens' Clause [Pat] Source #

clauseBody :: Lens' Clause Body Source #

clauseDecs :: Lens' Clause [Dec] Source #

## FieldExp Lenses

fieldExpName :: Lens' FieldExp Name Source #

fieldExpExpression :: Lens' FieldExp Exp Source #

## FieldPat Lenses

fieldPatName :: Lens' FieldPat Name Source #

fieldPatPattern :: Lens' FieldPat Pat Source #

## TySynEqn Lenses

tySynEqnLHS :: Lens' TySynEqn Type Source #

tySynEqnPatterns :: Lens' TySynEqn [Type] Source #

tySynEqnResult :: Lens' TySynEqn Type Source #

## InjectivityAnn Lenses

injectivityAnnOutput :: Lens' InjectivityAnn Name Source #

injectivityAnnInputs :: Lens' InjectivityAnn [Name] Source #

## TypeFamilyHead Lenses

typeFamilyHeadName :: Lens' TypeFamilyHead Name Source #

typeFamilyHeadTyVarBndrs :: Lens' TypeFamilyHead [TyVarBndrVis] Source #

typeFamilyHeadResultSig :: Lens' TypeFamilyHead FamilyResultSig Source #

typeFamilyHeadInjectivityAnn :: Lens' TypeFamilyHead (Maybe InjectivityAnn) Source #

## Bang Lenses

bangSourceUnpackedness :: Lens' Bang SourceUnpackedness Source #

bangSourceStrictness :: Lens' Bang SourceStrictness Source #

## DerivClause Lenses

derivClauseStrategy :: Lens' DerivClause (Maybe DerivStrategy) Source #

derivClauseCxt :: Lens' DerivClause Cxt Source #

# Prisms

## Info Prisms

_ClassI :: Prism' Info (Dec, [InstanceDec]) Source #

_ClassOpI :: Prism' Info (Name, Type, ParentName) Source #

_TyConI :: Prism' Info Dec Source #

_FamilyI :: Prism' Info (Dec, [InstanceDec]) Source #

_PrimTyConI :: Prism' Info (Name, Arity, Unlifted) Source #

_DataConI :: Prism' Info (Name, Type, ParentName) Source #

_VarI :: Prism' Info (Name, Type, Maybe Dec) Source #

_TyVarI :: Prism' Info (Name, Type) Source #

_PatSynI :: Prism' Info (Name, PatSynType) Source #

## Dec Prisms

_FunD :: Prism' Dec (Name, [Clause]) Source #

_ValD :: Prism' Dec (Pat, Body, [Dec]) Source #

_DataD :: DataPrism' [TyVarBndrVis] [Con] Source #

    _DataD :: Prism' Dec (Cxt, Name, [TyVarBndrUnit], Maybe Kind, [Con], [DerivClause]) -- template-haskell-2.12+
    _DataD :: Prism' Dec (Cxt, Name, [Type],          Maybe Kind, [Con], Cxt)           -- Earlier versions

_NewtypeD :: DataPrism' [TyVarBndrVis] Con Source #

    _NewtypeD :: Prism' Dec (Cxt, Name, [TyVarBndrUnit], Maybe Kind, Con, [DerivClause]) -- template-haskell-2.12+
    _NewtypeD :: Prism' Dec (Cxt, Name, [Type],          Maybe Kind, Con, Cxt)           -- Earlier versions

_TySynD :: Prism' Dec (Name, [TyVarBndrVis], Type) Source #

_ClassD :: Prism' Dec (Cxt, Name, [TyVarBndrVis], [FunDep], [Dec]) Source #

_InstanceD :: Prism' Dec (Maybe Overlap, Cxt, Type, [Dec]) Source #

_SigD :: Prism' Dec (Name, Type) Source #

_ForeignD :: Prism' Dec Foreign Source #

_InfixD :: Prism' Dec (Fixity, Name) Source #

_PragmaD :: Prism' Dec Pragma Source #

_DataInstD :: Prism' Dec (Cxt, Maybe [TyVarBndrUnit], Type, Maybe Kind, [Con], [DerivClause]) Source #

    _DataInstD :: Prism' Dec (Cxt, Maybe [TyVarBndrUnit], Type, Maybe Kind, [Con], [DerivClause]) -- template-haskell-2.15+
    _DataInstD :: Prism' Dec (Cxt, Name, [Type],                Maybe Kind, [Con], [DerivClause]) -- template-haskell-2.12 through 2.14
    _DataInstD :: Prism' Dec (Cxt, Name, [Type],                Maybe Kind, [Con], Cxt)           -- Earlier versions

_NewtypeInstD :: Prism' Dec (Cxt, Maybe [TyVarBndrUnit], Type, Maybe Kind, Con, [DerivClause]) Source #

    _NewtypeInstD :: Prism' Dec (Cxt, Maybe [TyVarBndrUnit], Type, Maybe Kind, Con, [DerivClause]) -- template-haskell-2.15+
    _NewtypeInstD :: Prism' Dec (Cxt, Name, [Type],                Maybe Kind, Con, [DerivClause]) -- template-haskell-2.12 through 2.14
    _NewtypeInstD :: Prism' Dec (Cxt, Name, [Type],                Maybe Kind, Con, Cxt)           -- Earlier versions

_TySynInstD :: Prism' Dec TySynEqn Source #

    _TySynInstD :: Prism' Dec TySynEqn             -- template-haskell-2.15+
    _TySynInstD :: Prism' Dec (Name, TySynEqn)     -- template-haskell-2.9 through 2.14
    _TySynInstD :: Prism' Dec (Name, [Type], Type) -- Earlier versions

_ClosedTypeFamilyD :: Prism' Dec (TypeFamilyHead, [TySynEqn]) Source #

_RoleAnnotD :: Prism' Dec (Name, [Role]) Source #

_StandaloneDerivD :: Prism' Dec (Maybe DerivStrategy, Cxt, Type) Source #

    _StandaloneDerivD :: Prism' Dec (Maybe DerivStrategy, Cxt, Type) -- template-haskell-2.12+
    _StandaloneDerivD :: Prism' Dec                      (Cxt, Type) -- Earlier versions

_DefaultSigD :: Prism' Dec (Name, Type) Source #

_DataFamilyD :: Prism' Dec (Name, [TyVarBndrVis], Maybe Kind) Source #

_OpenTypeFamilyD :: Prism' Dec TypeFamilyHead Source #

_PatSynD :: Prism' Dec (Name, PatSynArgs, PatSynDir, Pat) Source #

_PatSynSigD :: Prism' Dec (Name, PatSynType) Source #

_ImplicitParamBindD :: Prism' Dec (String, Exp) Source #

_DefaultD :: Prism' Dec [Type] Source #

## PatSynDir Prisms

_Unidir :: Prism' PatSynDir () Source #

_ImplBidir :: Prism' PatSynDir () Source #

_ExplBidir :: Prism' PatSynDir [Clause] Source #

## PatSynArgs Prisms

_PrefixPatSyn :: Prism' PatSynArgs [Name] Source #

_InfixPatSyn :: Prism' PatSynArgs (Name, Name) Source #

_RecordPatSyn :: Prism' PatSynArgs [Name] Source #

## Con Prisms

_NormalC :: Prism' Con (Name, [BangType]) Source #

_RecC :: Prism' Con (Name, [VarBangType]) Source #

_InfixC :: Prism' Con (BangType, Name, BangType) Source #

_ForallC :: Prism' Con ([TyVarBndrSpec], Cxt, Con) Source #

_GadtC :: Prism' Con ([Name], [BangType], Type) Source #

_RecGadtC :: Prism' Con ([Name], [VarBangType], Type) Source #

## Overlap Prisms

_Overlappable :: Prism' Overlap () Source #

_Overlapping :: Prism' Overlap () Source #

_Overlaps :: Prism' Overlap () Source #

_Incoherent :: Prism' Overlap () Source #

## SourceUnpackedness Prisms

_NoSourceUnpackedness :: Prism' SourceUnpackedness () Source #

_SourceNoUnpack :: Prism' SourceUnpackedness () Source #

_SourceUnpack :: Prism' SourceUnpackedness () Source #

## SourceStrictness Prisms

_NoSourceStrictness :: Prism' SourceStrictness () Source #

_SourceLazy :: Prism' SourceStrictness () Source #

_SourceStrict :: Prism' SourceStrictness () Source #

## DecidedStrictness Prisms

_DecidedLazy :: Prism' DecidedStrictness () Source #

_DecidedStrict :: Prism' DecidedStrictness () Source #

_DecidedUnpack :: Prism' DecidedStrictness () Source #

## Foreign Prisms

_ImportF :: Prism' Foreign (Callconv, Safety, String, Name, Type) Source #

_ExportF :: Prism' Foreign (Callconv, String, Name, Type) Source #

## Callconv Prisms

_CCall :: Prism' Callconv () Source #

_StdCall :: Prism' Callconv () Source #

_CApi :: Prism' Callconv () Source #

_Prim :: Prism' Callconv () Source #

_JavaScript :: Prism' Callconv () Source #

## Safety Prisms

_Unsafe :: Prism' Safety () Source #

_Safe :: Prism' Safety () Source #

_Interruptible :: Prism' Safety () Source #

## Pragma Prisms

_InlineP :: Prism' Pragma (Name, Inline, RuleMatch, Phases) Source #

_SpecialiseP :: Prism' Pragma (Name, Type, Maybe Inline, Phases) Source #

_SpecialiseInstP :: Prism' Pragma Type Source #

_RuleP :: Prism' Pragma (String, Maybe [TyVarBndrUnit], [RuleBndr], Exp, Exp, Phases) Source #

    _RuleP :: Prism' Pragma (String, Maybe [TyVarBndrUnit], [RuleBndr], Exp, Exp, Phases) -- template-haskell-2.15+
    _RuleP :: Prism' Pragma (String,                        [RuleBndr], Exp, Exp, Phases) -- Earlier versions

_AnnP :: Prism' Pragma (AnnTarget, Exp) Source #

_LineP :: Prism' Pragma (Int, String) Source #

_CompleteP :: Prism' Pragma ([Name], Maybe Name) Source #

_OpaqueP :: Prism' Pragma Name Source #

## Inline Prisms

_NoInline :: Prism' Inline () Source #

_Inline :: Prism' Inline () Source #

_Inlinable :: Prism' Inline () Source #

## RuleMatch Prisms

_ConLike :: Prism' RuleMatch () Source #

_FunLike :: Prism' RuleMatch () Source #

## Phases Prisms

_AllPhases :: Prism' Phases () Source #

_FromPhase :: Prism' Phases Int Source #

_BeforePhase :: Prism' Phases Int Source #

## RuleBndr Prisms

_RuleVar :: Prism' RuleBndr Name Source #

_TypedRuleVar :: Prism' RuleBndr (Name, Type) Source #

## AnnTarget Prisms

_ModuleAnnotation :: Prism' AnnTarget () Source #

_TypeAnnotation :: Prism' AnnTarget Name Source #

_ValueAnnotation :: Prism' AnnTarget Name Source #

## FunDep Prisms TODO make a lens

_FunDep :: Iso' FunDep ([Name], [Name]) Source #

## FixityDirection Prisms

_InfixL :: Prism' FixityDirection () Source #

_InfixR :: Prism' FixityDirection () Source #

_InfixN :: Prism' FixityDirection () Source #

## Exp Prisms

_VarE :: Prism' Exp Name Source #

_ConE :: Prism' Exp Name Source #

_LitE :: Prism' Exp Lit Source #

_AppE :: Prism' Exp (Exp, Exp) Source #

_AppTypeE :: Prism' Exp (Exp, Type) Source #

_InfixE :: Prism' Exp (Maybe Exp, Exp, Maybe Exp) Source #

_UInfixE :: Prism' Exp (Exp, Exp, Exp) Source #

_ParensE :: Prism' Exp Exp Source #

_LamE :: Prism' Exp ([Pat], Exp) Source #

_LamCaseE :: Prism' Exp [Match] Source #

_TupE :: Prism' Exp [Maybe Exp] Source #

    _TupE :: Prism' Exp [Maybe Exp] -- template-haskell-2.16+
    _TupE :: Prism' Exp [Exp]       -- Earlier versions

_UnboxedTupE :: Prism' Exp [Maybe Exp] Source #

    _UnboxedTupE :: Prism' Exp [Maybe Exp] -- template-haskell-2.16+
    _UnboxedTupE :: Prism' Exp [Exp]       -- Earlier versions

_UnboxedSumE :: Prism' Exp (Exp, SumAlt, SumArity) Source #

_CondE :: Prism' Exp (Exp, Exp, Exp) Source #

_MultiIfE :: Prism' Exp [(Guard, Exp)] Source #

_LetE :: Prism' Exp ([Dec], Exp) Source #

_CaseE :: Prism' Exp (Exp, [Match]) Source #

_DoE :: Prism' Exp (Maybe ModName, [Stmt]) Source #

    _DoE :: Prism' Exp (Maybe ModName, [Stmt]) -- template-haskell-2.17+
    _DoE :: Prism' Exp [Stmt]                  -- Earlier versions

_CompE :: Prism' Exp [Stmt] Source #

_ArithSeqE :: Prism' Exp Range Source #

_ListE :: Prism' Exp [Exp] Source #

_SigE :: Prism' Exp (Exp, Type) Source #

_RecConE :: Prism' Exp (Name, [FieldExp]) Source #

_RecUpdE :: Prism' Exp (Exp, [FieldExp]) Source #

_StaticE :: Prism' Exp Exp Source #

_UnboundVarE :: Prism' Exp Name Source #

_LabelE :: Prism' Exp String Source #

_MDoE :: Prism' Exp (Maybe ModName, [Stmt]) Source #

    _MDoE :: Prism' Exp (Maybe ModName, [Stmt]) -- template-haskell-2.17+
    _MDoE :: Prism' Exp [Stmt]                  -- Earlier versions

_ImplicitParamVarE :: Prism' Exp String Source #

_GetFieldE :: Prism' Exp (Exp, String) Source #

_ProjectionE :: Prism' Exp (NonEmpty String) Source #

_LamCasesE :: Prism' Exp [Clause] Source #

## Body Prisms

_GuardedB :: Prism' Body [(Guard, Exp)] Source #

_NormalB :: Prism' Body Exp Source #

## Guard Prisms

_NormalG :: Prism' Guard Exp Source #

_PatG :: Prism' Guard [Stmt] Source #

## Stmt Prisms

_BindS :: Prism' Stmt (Pat, Exp) Source #

_LetS :: Prism' Stmt [Dec] Source #

_NoBindS :: Prism' Stmt Exp Source #

_ParS :: Prism' Stmt [[Stmt]] Source #

_RecS :: Prism' Stmt [Stmt] Source #

## Range Prisms

_FromR :: Prism' Range Exp Source #

_FromThenR :: Prism' Range (Exp, Exp) Source #

_FromToR :: Prism' Range (Exp, Exp) Source #

_FromThenToR :: Prism' Range (Exp, Exp, Exp) Source #

## Lit Prisms

_CharL :: Prism' Lit Char Source #

_StringL :: Prism' Lit String Source #

_IntegerL :: Prism' Lit Integer Source #

_RationalL :: Prism' Lit Rational Source #

_IntPrimL :: Prism' Lit Integer Source #

_WordPrimL :: Prism' Lit Integer Source #

_FloatPrimL :: Prism' Lit Rational Source #

_DoublePrimL :: Prism' Lit Rational Source #

_StringPrimL :: Prism' Lit [Word8] Source #

_CharPrimL :: Prism' Lit Char Source #

_BytesPrimL :: Prism' Lit Bytes Source #

## Pat Prisms

_LitP :: Prism' Pat Lit Source #

_VarP :: Prism' Pat Name Source #

_TupP :: Prism' Pat [Pat] Source #

_UnboxedTupP :: Prism' Pat [Pat] Source #

_UnboxedSumP :: Prism' Pat (Pat, SumAlt, SumArity) Source #

_ConP :: Prism' Pat (Name, [Type], [Pat]) Source #

    _ConP :: Prism' Pat (Name, [Type], [Pat]) -- template-haskell-2.18+
    _ConP :: Prism' Pat (Name,         [Pat]) -- Earlier versions

_InfixP :: Prism' Pat (Pat, Name, Pat) Source #

_UInfixP :: Prism' Pat (Pat, Name, Pat) Source #

_ParensP :: Prism' Pat Pat Source #

_TildeP :: Prism' Pat Pat Source #

_BangP :: Prism' Pat Pat Source #

_AsP :: Prism' Pat (Name, Pat) Source #

_WildP :: Prism' Pat () Source #

_RecP :: Prism' Pat (Name, [FieldPat]) Source #

_ListP :: Prism' Pat [Pat] Source #

_SigP :: Prism' Pat (Pat, Type) Source #

_ViewP :: Prism' Pat (Exp, Pat) Source #

## Type Prisms

_ForallT :: Prism' Type ([TyVarBndrSpec], Cxt, Type) Source #

_AppT :: Prism' Type (Type, Type) Source #

_SigT :: Prism' Type (Type, Kind) Source #

_VarT :: Prism' Type Name Source #

_ConT :: Prism' Type Name Source #

_PromotedT :: Prism' Type Name Source #

_TupleT :: Prism' Type Int Source #

_UnboxedTupleT :: Prism' Type Int Source #

_UnboxedSumT :: Prism' Type SumArity Source #

_ArrowT :: Prism' Type () Source #

_EqualityT :: Prism' Type () Source #

_ListT :: Prism' Type () Source #

_PromotedTupleT :: Prism' Type Int Source #

_PromotedNilT :: Prism' Type () Source #

_PromotedConsT :: Prism' Type () Source #

_StarT :: Prism' Type () Source #

_ConstraintT :: Prism' Type () Source #

_LitT :: Prism' Type TyLit Source #

_InfixT :: Prism' Type (Type, Name, Type) Source #

_UInfixT :: Prism' Type (Type, Name, Type) Source #

_ParensT :: Prism' Type Type Source #

_WildCardT :: Prism' Type () Source #

_AppKindT :: Prism' Type (Type, Kind) Source #

_ImplicitParamT :: Prism' Type (String, Type) Source #

_ForallVisT :: Prism' Type ([TyVarBndrUnit], Type) Source #

_MulArrowT :: Prism' Type () Source #

_PromotedInfixT :: Prism' Type (Type, Name, Type) Source #

_PromotedUInfixT :: Prism' Type (Type, Name, Type) Source #

## Specificity Prisms

_SpecifiedSpec :: Prism' Specificity () Source #

_InferredSpec :: Prism' Specificity () Source #

## TyVarBndr Prisms

_PlainTV :: Prism' (TyVarBndr flag) (Name, flag) Source #

    _PlainTV :: Prism' (TyVarBndr flag) (Name, flag) -- template-haskell-2.17+
    _PlainTV :: Prism'  TyVarBndr        Name        -- Earlier versions

_KindedTV :: Prism' (TyVarBndr flag) (Name, flag, Kind) Source #

    _KindedTV :: Prism' (TyVarBndr flag) (Name, flag, Kind) -- template-haskell-2.17+
    _KindedTV :: Prism'  TyVarBndr       (Name,       Kind) -- Earlier versions

## FamilyResultSig Prisms

_NoSig :: Prism' FamilyResultSig () Source #

_KindSig :: Prism' FamilyResultSig Kind Source #

_TyVarSig :: Prism' FamilyResultSig TyVarBndrUnit Source #

## TyLit Prisms

_NumTyLit :: Prism' TyLit Integer Source #

_StrTyLit :: Prism' TyLit String Source #

_CharTyLit :: Prism' TyLit Char Source #

## Role Prisms

_NominalR :: Prism' Role () Source #

_RepresentationalR :: Prism' Role () Source #

_PhantomR :: Prism' Role () Source #

_InferR :: Prism' Role () Source #

## DerivStrategy Prisms

_StockStrategy :: Prism' DerivStrategy () Source #

_AnyclassStrategy :: Prism' DerivStrategy () Source #

_NewtypeStrategy :: Prism' DerivStrategy () Source #