lens-4.5: Lenses, Folds and Traversals

PortabilityTemplateHaskell
Stabilityexperimental
MaintainerEdward Kmett <ekmett@gmail.com>
Safe HaskellTrustworthy

Language.Haskell.TH.Lens

Contents

Description

Lenses, Prisms, and Traversals for working with Template Haskell

Synopsis

Traversals

class HasName t whereSource

Has a Name

Methods

name :: Lens' t NameSource

Extract (or modify) the Name of something

Instances

HasName Name 
HasName TyVarBndr 
HasName Con 

class HasTypeVars t whereSource

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

Methods

typeVarsEx :: Set Name -> Traversal' t NameSource

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 
HasTypeVars Name 
HasTypeVars Pred 
HasTypeVars TyVarBndr 
HasTypeVars Con 
HasTypeVars t => HasTypeVars [t] 
HasTypeVars t => HasTypeVars (Maybe t) 

class SubstType t whereSource

Provides substitution for types

Methods

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

Perform substitution for types

Instances

SubstType Type 
SubstType Pred 
SubstType t => SubstType [t] 

typeVars :: HasTypeVars t => Traversal' t NameSource

Traverse free type variables

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

Substitute using a map of names in for free type variables

conFields :: Traversal' Con StrictTypeSource

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

conNamedFields :: Traversal' Con VarStrictTypeSource

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

Lenses

Loc Lenses

locFileName :: Lens' Loc StringSource

locPackage :: Lens' Loc StringSource

locModule :: Lens' Loc StringSource

locStart :: Lens' Loc CharPosSource

locEnd :: Lens' Loc CharPosSource

FunDep Lenses

funDepInputs :: Lens' FunDep [Name]Source

funDepOutputs :: Lens' FunDep [Name]Source

Match Lenses

matchBody :: Lens' Match BodySource

Fixity Lenses

fixityDirection :: Lens' Fixity FixityDirectionSource

Clause Lenses

clausePattern :: Lens' Clause [Pat]Source

clauseBody :: Lens' Clause BodySource

clauseDecs :: Lens' Clause [Dec]Source

FieldExp Lenses

fieldExpName :: Lens' FieldExp NameSource

FieldPat Lenses

fieldPatName :: Lens' FieldPat NameSource

Prisms

Info Prisms

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

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

_TyConI :: Prism' Info DecSource

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

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

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

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

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

Dec Prisms

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

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

_DataD :: Prism' Dec (Cxt, Name, [TyVarBndr], [Con], [Name])Source

_NewtypeD :: Prism' Dec (Cxt, Name, [TyVarBndr], Con, [Name])Source

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

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

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

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

_ForeignD :: Prism' Dec ForeignSource

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

_PragmaD :: Prism' Dec PragmaSource

_FamilyD :: Prism' Dec (FamFlavour, Name, [TyVarBndr], Maybe Kind)Source

_DataInstD :: Prism' Dec (Cxt, Name, [Type], [Con], [Name])Source

_NewtypeInstD :: Prism' Dec (Cxt, Name, [Type], Con, [Name])Source

_TySynInstD :: Prism' Dec (Name, [Type], Type)Source

Con Prisms

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

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

_InfixC :: Prism' Con (StrictType, Name, StrictType)Source

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

Strict Prisms

_IsStrict :: Prism' Strict ()Source

_Unpacked :: Prism' Strict ()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

Safety Prisms

_Unsafe :: Prism' Safety ()Source

_Safe :: Prism' Safety ()Source

Pragma Prisms

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

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

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

Inline Prisms

_NoInline :: Prism' Inline ()Source

_Inline :: Prism' Inline ()Source

RuleMatch Prisms

_ConLike :: Prism' RuleMatch ()Source

_FunLike :: Prism' RuleMatch ()Source

Phases Prisms

_FromPhase :: Prism' Phases IntSource

RuleBndr Prisms

_RuleVar :: Prism' RuleBndr NameSource

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

FunDep Prisms TODO make a lens

_FunDep :: Prism' FunDep ([Name], [Name])Source

FamFlavour Prisms

_TypeFam :: Prism' FamFlavour ()Source

_DataFam :: Prism' FamFlavour ()Source

FixityDirection Prisms

_InfixL :: Prism' FixityDirection ()Source

_InfixR :: Prism' FixityDirection ()Source

_InfixN :: Prism' FixityDirection ()Source

Exp Prisms

_VarE :: Prism' Exp NameSource

_ConE :: Prism' Exp NameSource

_LitE :: Prism' Exp LitSource

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

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

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

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

_LamCaseE :: Prism' Exp [Match]Source

_TupE :: Prism' Exp [Exp]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 [Stmt]Source

_CompE :: Prism' Exp [Stmt]Source

_ListE :: Prism' Exp [Exp]Source

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

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

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

Body Prisms

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

Guard Prisms

_NormalG :: Prism' Guard ExpSource

_PatG :: Prism' Guard [Stmt]Source

Stmt Prisms

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

_LetS :: Prism' Stmt [Dec]Source

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

Range Prisms

_FromR :: Prism' Range ExpSource

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

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

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

Lit Prisms

_CharL :: Prism' Lit CharSource

_StringL :: Prism' Lit StringSource

_IntegerL :: Prism' Lit IntegerSource

_RationalL :: Prism' Lit RationalSource

_IntPrimL :: Prism' Lit IntegerSource

_WordPrimL :: Prism' Lit IntegerSource

_FloatPrimL :: Prism' Lit RationalSource

_DoublePrimL :: Prism' Lit RationalSource

_StringPrimL :: Prism' Lit [Word8]Source

Pat Prisms

_LitP :: Prism' Pat LitSource

_VarP :: Prism' Pat NameSource

_TupP :: Prism' Pat [Pat]Source

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

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

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

_BangP :: Prism' Pat PatSource

_AsP :: Prism' Pat (Name, 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 ([TyVarBndr], Cxt, Type)Source

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

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

_VarT :: Prism' Type NameSource

_ConT :: Prism' Type NameSource

_TupleT :: Prism' Type IntSource

_ListT :: Prism' Type ()Source

_StarT :: Prism' Type ()Source

_LitT :: Prism' Type TyLitSource

TyVarBndr Prisms

_PlainTV :: Prism' TyVarBndr NameSource

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

TyLit Prisms

_NumTyLit :: Prism' TyLit IntegerSource

_StrTyLit :: Prism' TyLit StringSource

Pred Prisms

_ClassP :: Prism' Pred (Name, [Type])Source

_EqualP :: Prism' Pred (Type, Type)Source