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 |
- Traversals
- 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
- TyVarBndr Prisms
- FamilyResultSig Prisms
- TyLit Prisms
- Role Prisms
- DerivStrategy Prisms
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
- class HasTypes t where
- types :: Traversal' t Type
- class HasTypeVars t where
- typeVarsEx :: Set Name -> Traversal' t Name
- 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
- 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 [TyVarBndr]
- 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' [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 :: Prism' Dec (Cxt, Maybe [TyVarBndr], Type, Maybe Kind, [Con], [DerivClause])
- _NewtypeInstD :: Prism' Dec (Cxt, Maybe [TyVarBndr], 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, [TyVarBndr], Maybe Kind)
- _OpenTypeFamilyD :: Prism' Dec TypeFamilyHead
- _PatSynD :: Prism' Dec (Name, PatSynArgs, PatSynDir, Pat)
- _PatSynSigD :: Prism' Dec (Name, PatSynType)
- _ImplicitParamBindD :: Prism' Dec (String, Exp)
- _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 ([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, Maybe [TyVarBndr], [RuleBndr], Exp, Exp, Phases)
- _AnnP :: Prism' Pragma (AnnTarget, Exp)
- _LineP :: Prism' Pragma (Int, String)
- _CompleteP :: Prism' Pragma ([Name], Maybe 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 [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 [Stmt]
- _ImplicitParamVarE :: Prism' Exp String
- _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, [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
- _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 ([TyVarBndr], 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 ()
- _StockStrategy :: Prism' DerivStrategy ()
- _AnyclassStrategy :: Prism' DerivStrategy ()
- _NewtypeStrategy :: Prism' DerivStrategy ()
Traversals
Has a Name
Instances
HasName Name # | |
HasName InjectivityAnn # | |
Defined in Language.Haskell.TH.Lens name :: Lens' InjectivityAnn Name # | |
HasName TypeFamilyHead # | |
Defined in Language.Haskell.TH.Lens name :: Lens' TypeFamilyHead Name # | |
HasName Foreign # | |
HasName RuleBndr # | |
HasName Con # | On |
HasName TyVarBndr # | |
Contains some amount of Type
s inside
types :: Traversal' t Type #
Traverse all the types
Instances
HasTypes Type # | |
Defined in Language.Haskell.TH.Lens types :: Traversal' Type Type # | |
HasTypes TySynEqn # | |
Defined in Language.Haskell.TH.Lens types :: Traversal' TySynEqn Type # | |
HasTypes Foreign # | |
Defined in Language.Haskell.TH.Lens types :: Traversal' Foreign Type # | |
HasTypes Con # | |
Defined in Language.Haskell.TH.Lens types :: Traversal' Con Type # | |
HasTypes t => HasTypes [t] # | |
Defined in Language.Haskell.TH.Lens types :: Traversal' [t] Type # |
class HasTypeVars t where #
Provides for the extraction of free type variables, and alpha renaming.
typeVarsEx :: Set Name -> Traversal' t Name #
Instances
HasTypeVars Type # | |
Defined in Language.Haskell.TH.Lens typeVarsEx :: Set Name -> Traversal' Type Name # | |
HasTypeVars Name # | |
Defined in Language.Haskell.TH.Lens typeVarsEx :: Set Name -> Traversal' Name Name # | |
HasTypeVars Con # | |
Defined in Language.Haskell.TH.Lens typeVarsEx :: Set Name -> Traversal' Con Name # | |
HasTypeVars TyVarBndr # | |
Defined in Language.Haskell.TH.Lens typeVarsEx :: Set Name -> Traversal' TyVarBndr Name # | |
HasTypeVars t => HasTypeVars [t] # | |
Defined in Language.Haskell.TH.Lens typeVarsEx :: Set Name -> Traversal' [t] Name # | |
HasTypeVars t => HasTypeVars (Maybe t) # | |
Defined in Language.Haskell.TH.Lens typeVarsEx :: Set Name -> Traversal' (Maybe t) Name # |
Provides substitution for types
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.
conFields ::Traversal'
Con
BangType
-- template-haskell-2.11+ conFields ::Traversal'
Con
StrictType
-- Earlier versions
conNamedFields :: Traversal' Con VarBangType #
Traversal
of the types of the named fields of a constructor.
conNamedFields ::Traversal'
Con
VarBangType
-- template-haskell-2.11+ conNamedFields ::Traversal'
Con
VarStrictType
-- Earlier versions
Lenses
Loc Lenses
locFileName :: Lens' Loc String #
locPackage :: Lens' Loc String #
FunDep Lenses
funDepInputs :: Lens' FunDep [Name] #
funDepOutputs :: Lens' FunDep [Name] #
Match Lenses
matchPattern :: Lens' Match Pat #
matchDeclarations :: Lens' Match [Dec] #
Fixity Lenses
Clause Lenses
clausePattern :: Lens' Clause [Pat] #
clauseBody :: Lens' Clause Body #
clauseDecs :: Lens' Clause [Dec] #
FieldExp Lenses
FieldPat Lenses
TySynEqn Lenses
tySynEqnPatterns :: Lens' TySynEqn [Type] #
InjectivityAnn Lenses
TypeFamilyHead Lenses
Bang Lenses
DerivClause Lenses
Prisms
Info Prisms
Dec Prisms
_DataInstD :: Prism' Dec (Cxt, Maybe [TyVarBndr], Type, Maybe Kind, [Con], [DerivClause]) #
_DataInstD ::Prism'
Dec
(Cxt
,Maybe
[TyVarBndr
],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
) -- template-haskell-2.11 _DataInstD ::Prism'
Dec
(Cxt
,Name
, [Type
], [Con
], [Name
]) -- Earlier versions
_NewtypeInstD :: Prism' Dec (Cxt, Maybe [TyVarBndr], Type, Maybe Kind, Con, [DerivClause]) #
_NewtypeInstD ::Prism'
Dec
(Cxt
,Maybe
[TyVarBndr
],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
) -- template-haskell-2.11 _NewtypeInstD ::Prism'
Dec
(Cxt
,Name
, [Type
],Con
, [Name
]) -- Earlier versions
_ClosedTypeFamilyD :: Prism' Dec (TypeFamilyHead, [TySynEqn]) #
_StandaloneDerivD :: Prism' Dec (Maybe DerivStrategy, Cxt, Type) #
_PatSynSigD :: Prism' Dec (Name, PatSynType) #
PatSynDir Prisms
_ImplBidir :: Prism' PatSynDir () #
_ExplBidir :: Prism' PatSynDir [Clause] #
PatSynArgs Prisms
_PrefixPatSyn :: Prism' PatSynArgs [Name] #
_InfixPatSyn :: Prism' PatSynArgs (Name, Name) #
_RecordPatSyn :: Prism' PatSynArgs [Name] #
Con Prisms
_RecC :: Prism' Con (Name, [VarBangType]) #
_RecC ::Prism'
Con
(Name
, [VarBangType
]) -- template-haskell-2.11+ _RecC ::Prism'
Con
(Name
, [VarStrictType
]) -- Earlier versions
_InfixC :: Prism' Con (BangType, Name, BangType) #
_InfixC ::Prism'
Con
(BangType
,Name
,BangType
) -- template-haskell-2.11+ _InfixC ::Prism'
Con
(StrictType
,Name
,StrictType
) -- Earlier versions
Overlap Prisms
_Overlappable :: Prism' Overlap () #
_Overlapping :: Prism' Overlap () #
_Incoherent :: Prism' Overlap () #
SourceUnpackedness Prisms
SourceStrictness Prisms
_SourceLazy :: Prism' SourceStrictness () #
_SourceStrict :: Prism' SourceStrictness () #
DecidedStrictness Prisms
_DecidedLazy :: Prism' DecidedStrictness () #
Foreign Prisms
Callconv Prisms
_JavaScript :: Prism' Callconv () #
Safety Prisms
_Interruptible :: Prism' Safety () #
Pragma Prisms
Inline Prisms
_Inlinable :: Prism' Inline () #
RuleMatch Prisms
Phases Prisms
_AllPhases :: Prism' Phases () #
_FromPhase :: Prism' Phases Int #
_BeforePhase :: Prism' Phases Int #
RuleBndr Prisms
AnnTarget Prisms
_ModuleAnnotation :: Prism' AnnTarget () #
FunDep Prisms TODO make a lens
FixityDirection Prisms
_InfixL :: Prism' FixityDirection () #
_InfixR :: Prism' FixityDirection () #
_InfixN :: Prism' FixityDirection () #
Exp Prisms
_ArithSeqE :: Prism' Exp Range #
_UnboundVarE :: Prism' Exp Name #
Body Prisms
Guard Prisms
Stmt Prisms
Range Prisms
Lit Prisms
_RationalL :: Prism' Lit Rational #
_WordPrimL :: Prism' Lit Integer #
_StringPrimL :: Prism' Lit [Word8] #
_CharPrimL :: Prism' Lit Char #
_BytesPrimL :: Prism' Lit Bytes #
Pat Prisms
_UnboxedTupP :: Prism' Pat [Pat] #
Type Prisms
_PromotedT :: Prism' Type Name #
_UnboxedTupleT :: Prism' Type Int #
_EqualityT :: Prism' Type () #
_PromotedNilT :: Prism' Type () #
_PromotedConsT :: Prism' Type () #
_ConstraintT :: Prism' Type () #
_WildCardT :: Prism' Type () #
TyVarBndr Prisms
FamilyResultSig Prisms
_NoSig :: Prism' FamilyResultSig () #
TyLit Prisms
Role Prisms
_RepresentationalR :: Prism' Role () #
DerivStrategy Prisms
_StockStrategy :: Prism' DerivStrategy () #
_NewtypeStrategy :: Prism' DerivStrategy () #