Language.Haskell.TH.Lens

lens-4.15.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 | Haskell98

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
- Prisms
  - Info Prisms
  - Dec 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
  - FamFlavour Prisms
  - FixityDirection Prisms
  - Exp Prisms
  - Body Prisms
  - Guard Prisms
  - Stmt Prisms
  - Range Prisms
  - Lit Prisms
  - Pat Prisms
  - Type Prisms
  - TyVarBndr Prisms
  - FamilyResultSig Prisms
  - TyLit Prisms
  - Role Prisms

Description

Lenses, Prisms, and Traversals for working with Template Haskell

Synopsis

- class HasName t where
- class HasTypes t where
- class HasTypeVars t where
- class SubstType t where
- 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
- tySynEqnPatterns :: Lens' TySynEqn [Type]
- tySynEqnResult :: Lens' TySynEqn Type
- injectivityAnnOutput :: Lens' InjectivityAnn Name
- injectivityAnnInputs :: Lens' InjectivityAnn [Name]
- typeFamilyHeadName :: Lens' TypeFamilyHead Name
- typeFamilyHeadTyVarBndrs :: Lens' TypeFamilyHead [TyVarBndr]
- typeFamilyHeadResultSig :: Lens' TypeFamilyHead FamilyResultSig
- typeFamilyHeadInjectivityAnn :: Lens' TypeFamilyHead (Maybe InjectivityAnn)
- bangSourceUnpackedness :: Lens' Bang SourceUnpackedness
- bangSourceStrictness :: Lens' Bang SourceStrictness
- _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)
- _FunD :: Prism' Dec (Name, [Clause])
- _ValD :: Prism' Dec (Pat, Body, [Dec])
- _DataD :: DataPrism' [TyVarBndr] [Con]
- _NewtypeD :: DataPrism' [TyVarBndr] Con
- _TySynD :: Prism' Dec (Name, [TyVarBndr], Type)
- _ClassD :: Prism' Dec (Cxt, Name, [TyVarBndr], [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 :: DataPrism' [Type] [Con]
- _NewtypeInstD :: DataPrism' [Type] Con
- _TySynInstD :: Prism' Dec (Name, TySynEqn)
- _ClosedTypeFamilyD :: Prism' Dec (TypeFamilyHead, [TySynEqn])
- _RoleAnnotD :: Prism' Dec (Name, [Role])
- _StandaloneDerivD :: Prism' Dec (Cxt, Type)
- _DefaultSigD :: Prism' Dec (Name, Type)
- _DataFamilyD :: Prism' Dec (Name, [TyVarBndr], Maybe Kind)
- _OpenTypeFamilyD :: Prism' Dec TypeFamilyHead
- _NormalC :: Prism' Con (Name, [BangType])
- _RecC :: Prism' Con (Name, [VarBangType])
- _InfixC :: Prism' Con (BangType, Name, BangType)
- _ForallC :: Prism' Con ([TyVarBndr], 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, [RuleBndr], Exp, Exp, Phases)
- _AnnP :: Prism' Pragma (AnnTarget, Exp)
- _LineP :: Prism' Pragma (Int, String)
- _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])
- _TypeFam :: Prism' FamFlavour ()
- _DataFam :: Prism' FamFlavour ()
- _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)
- _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 [Exp]
- _UnboxedTupE :: Prism' Exp [Exp]
- _CondE :: Prism' Exp (Exp, Exp, Exp)
- _MultiIfE :: Prism' Exp [(Guard, Exp)]
- _LetE :: Prism' Exp ([Dec], Exp)
- _CaseE :: Prism' Exp (Exp, [Match])
- _DoE :: Prism' Exp [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
- _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]]
- _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
- _LitP :: Prism' Pat Lit
- _VarP :: Prism' Pat Name
- _TupP :: Prism' Pat [Pat]
- _UnboxedTupP :: Prism' Pat [Pat]
- _ConP :: Prism' Pat (Name, [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 ([TyVarBndr], 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
- _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 ()
- _PlainTV :: Prism' TyVarBndr Name
- _KindedTV :: Prism' TyVarBndr (Name, Kind)
- _NoSig :: Prism' FamilyResultSig ()
- _KindSig :: Prism' FamilyResultSig Kind
- _TyVarSig :: Prism' FamilyResultSig TyVarBndr
- _NumTyLit :: Prism' TyLit Integer
- _StrTyLit :: Prism' TyLit String
- _NominalR :: Prism' Role ()
- _RepresentationalR :: Prism' Role ()
- _PhantomR :: Prism' Role ()
- _InferR :: Prism' Role ()

# Traversals

class HasName t where #

Has a `Name`

Minimal complete definition

name

Methods

name :: Lens' t Name #

Extract (or modify) the `Name` of something

Instances

HasName Name # |
Methods name :: Lens' Name Name #
HasName TyVarBndr # |
Methods name :: Lens' TyVarBndr Name #
HasName InjectivityAnn # |
Methods name :: Lens' InjectivityAnn Name #
HasName TypeFamilyHead # |
Methods name :: Lens' TypeFamilyHead Name #
HasName Foreign # |
Methods name :: Lens' Foreign Name #
HasName RuleBndr # |
Methods name :: Lens' RuleBndr Name #
HasName Con # | On `template-haskell-2.11.0.0` or later, if a `GadtC` or `RecGadtC` has multiple `Name`s, the leftmost `Name` will be chosen.
Methods name :: Lens' Con Name #

class HasTypes t where #

Contains some amount of `Type`s inside

Minimal complete definition

types

Methods

types :: Traversal' t Type #

Traverse all the types

Instances

HasTypes Type # |
Methods types :: Traversal' Type Type #
HasTypes TySynEqn # |
Methods types :: Traversal' TySynEqn Type #
HasTypes Foreign # |
Methods types :: Traversal' Foreign Type #
HasTypes Con # |
Methods types :: Traversal' Con Type #
HasTypes t => HasTypes [t] # |
Methods types :: Traversal' [t] Type #

class HasTypeVars t where #

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

Minimal complete definition

typeVarsEx

Methods

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

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

HasTypeVars Type # |
Methods typeVarsEx :: Set Name -> Traversal' Type Name #
HasTypeVars Name # |
Methods typeVarsEx :: Set Name -> Traversal' Name Name #
HasTypeVars TyVarBndr # |
Methods typeVarsEx :: Set Name -> Traversal' TyVarBndr Name #
HasTypeVars Con # |
Methods typeVarsEx :: Set Name -> Traversal' Con Name #
HasTypeVars t => HasTypeVars [t] # |
Methods typeVarsEx :: Set Name -> Traversal' [t] Name #
HasTypeVars t => HasTypeVars (Maybe t) # |
Methods typeVarsEx :: Set Name -> Traversal' (Maybe t) Name #

class SubstType t where #

Provides substitution for types

Minimal complete definition

substType

Methods

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

Perform substitution for types

Instances

SubstType Type # |
Methods substType :: Map Name Type -> Type -> Type #
SubstType t => SubstType [t] # |
Methods substType :: Map Name Type -> [t] -> [t] #

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

Traverse free type variables

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

Substitute using a map of names in for free type variables

conFields :: Traversal' Con BangType #

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

conNamedFields :: Traversal' Con VarBangType #

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

# Lenses

## Loc Lenses

locFileName :: Lens' Loc String #

locPackage :: Lens' Loc String #

locModule :: Lens' Loc String #

locStart :: Lens' Loc CharPos #

locEnd :: Lens' Loc CharPos #

## FunDep Lenses

funDepInputs :: Lens' FunDep [Name] #

funDepOutputs :: Lens' FunDep [Name] #

## Match Lenses

matchPattern :: Lens' Match Pat #

matchBody :: Lens' Match Body #

matchDeclarations :: Lens' Match [Dec] #

## Fixity Lenses

fixityPrecedence :: Lens' Fixity Int #

fixityDirection :: Lens' Fixity FixityDirection #

## Clause Lenses

clausePattern :: Lens' Clause [Pat] #

clauseBody :: Lens' Clause Body #

clauseDecs :: Lens' Clause [Dec] #

## FieldExp Lenses

fieldExpName :: Lens' FieldExp Name #

fieldExpExpression :: Lens' FieldExp Exp #

## FieldPat Lenses

fieldPatName :: Lens' FieldPat Name #

fieldPatPattern :: Lens' FieldPat Pat #

## TySynEqn Lenses

tySynEqnPatterns :: Lens' TySynEqn [Type] #

tySynEqnResult :: Lens' TySynEqn Type #

## InjectivityAnn Lenses

injectivityAnnOutput :: Lens' InjectivityAnn Name #

injectivityAnnInputs :: Lens' InjectivityAnn [Name] #

## TypeFamilyHead Lenses

typeFamilyHeadName :: Lens' TypeFamilyHead Name #

typeFamilyHeadTyVarBndrs :: Lens' TypeFamilyHead [TyVarBndr] #

typeFamilyHeadResultSig :: Lens' TypeFamilyHead FamilyResultSig #

typeFamilyHeadInjectivityAnn :: Lens' TypeFamilyHead (Maybe InjectivityAnn) #

## Bang Lenses

bangSourceUnpackedness :: Lens' Bang SourceUnpackedness #

bangSourceStrictness :: Lens' Bang SourceStrictness #

# Prisms

## Info Prisms

_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) #

## Dec Prisms

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

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

_DataD :: DataPrism' [TyVarBndr] [Con] #

_NewtypeD :: DataPrism' [TyVarBndr] Con #

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

_ClassD :: Prism' Dec (Cxt, Name, [TyVarBndr], [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 :: DataPrism' [Type] [Con] #

_NewtypeInstD :: DataPrism' [Type] Con #

_TySynInstD :: Prism' Dec (Name, TySynEqn) #

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

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

_StandaloneDerivD :: Prism' Dec (Cxt, Type) #

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

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

_OpenTypeFamilyD :: Prism' Dec TypeFamilyHead #

## Con Prisms

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

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

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

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

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

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

## Overlap Prisms

_Overlappable :: Prism' Overlap () #

_Overlapping :: Prism' Overlap () #

_Overlaps :: Prism' Overlap () #

_Incoherent :: Prism' Overlap () #

## SourceUnpackedness Prisms

_NoSourceUnpackedness :: Prism' SourceUnpackedness () #

_SourceNoUnpack :: Prism' SourceUnpackedness () #

_SourceUnpack :: Prism' SourceUnpackedness () #

## SourceStrictness Prisms

_NoSourceStrictness :: Prism' SourceStrictness () #

_SourceLazy :: Prism' SourceStrictness () #

_SourceStrict :: Prism' SourceStrictness () #

## DecidedStrictness Prisms

_DecidedLazy :: Prism' DecidedStrictness () #

_DecidedStrict :: Prism' DecidedStrictness () #

_DecidedUnpack :: Prism' DecidedStrictness () #

## Foreign Prisms

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

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

## Callconv Prisms

_CCall :: Prism' Callconv () #

_StdCall :: Prism' Callconv () #

_CApi :: Prism' Callconv () #

_Prim :: Prism' Callconv () #

_JavaScript :: Prism' Callconv () #

## Safety Prisms

_Unsafe :: Prism' Safety () #

_Safe :: Prism' Safety () #

_Interruptible :: Prism' Safety () #

## Pragma Prisms

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

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

_SpecialiseInstP :: Prism' Pragma Type #

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

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

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

## Inline Prisms

_NoInline :: Prism' Inline () #

_Inline :: Prism' Inline () #

_Inlinable :: Prism' Inline () #

## RuleMatch Prisms

_ConLike :: Prism' RuleMatch () #

_FunLike :: Prism' RuleMatch () #

## Phases Prisms

_AllPhases :: Prism' Phases () #

_FromPhase :: Prism' Phases Int #

_BeforePhase :: Prism' Phases Int #

## RuleBndr Prisms

_RuleVar :: Prism' RuleBndr Name #

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

## AnnTarget Prisms

_ModuleAnnotation :: Prism' AnnTarget () #

_TypeAnnotation :: Prism' AnnTarget Name #

_ValueAnnotation :: Prism' AnnTarget Name #

## FunDep Prisms TODO make a lens

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

## FamFlavour Prisms

_TypeFam :: Prism' FamFlavour () #

_DataFam :: Prism' FamFlavour () #

## FixityDirection Prisms

_InfixL :: Prism' FixityDirection () #

_InfixR :: Prism' FixityDirection () #

_InfixN :: Prism' FixityDirection () #

## Exp Prisms

_VarE :: Prism' Exp Name #

_ConE :: Prism' Exp Name #

_LitE :: Prism' Exp Lit #

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

_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 [Exp] #

_UnboxedTupE :: Prism' Exp [Exp] #

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

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

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

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

_DoE :: Prism' Exp [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 #

## Body Prisms

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

_NormalB :: Prism' Body Exp #

## Guard Prisms

_NormalG :: Prism' Guard Exp #

_PatG :: Prism' Guard [Stmt] #

## Stmt Prisms

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

_LetS :: Prism' Stmt [Dec] #

_NoBindS :: Prism' Stmt Exp #

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

## Range Prisms

_FromR :: Prism' Range Exp #

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

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

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

## Lit Prisms

_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 #

## Pat Prisms

_LitP :: Prism' Pat Lit #

_VarP :: Prism' Pat Name #

_TupP :: Prism' Pat [Pat] #

_UnboxedTupP :: Prism' Pat [Pat] #

_ConP :: Prism' Pat (Name, [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) #

## Type Prisms

_ForallT :: Prism' Type ([TyVarBndr], 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 #

_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 () #

## TyVarBndr Prisms

_PlainTV :: Prism' TyVarBndr Name #

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

## FamilyResultSig Prisms

_NoSig :: Prism' FamilyResultSig () #

_KindSig :: Prism' FamilyResultSig Kind #

_TyVarSig :: Prism' FamilyResultSig TyVarBndr #

## TyLit Prisms

_NumTyLit :: Prism' TyLit Integer #

_StrTyLit :: Prism' TyLit String #

## Role Prisms

_NominalR :: Prism' Role () #

_RepresentationalR :: Prism' Role () #

_PhantomR :: Prism' Role () #

_InferR :: Prism' Role () #