template-haskell-optics-0.1: Optics for template-haskell types

Safe HaskellNone
LanguageHaskell2010

Language.Haskell.TH.Optics

Contents

Description

Note: The API offered in this module is subject to change, as it mirrors the API provided by the template-haskell package, which changes between different releases of GHC. This module makes an effort to identify the version of template-haskell associated with API differences or extensions.

Synopsis

Traversals

class HasName t where Source #

Has a Name

Methods

name :: Lens' t Name Source #

Extract (or modify) the Name of something

Instances
HasName Name Source # 
Instance details

Defined in Language.Haskell.TH.Optics

HasName InjectivityAnn Source # 
Instance details

Defined in Language.Haskell.TH.Optics

HasName TypeFamilyHead Source # 
Instance details

Defined in Language.Haskell.TH.Optics

HasName Foreign Source # 
Instance details

Defined in Language.Haskell.TH.Optics

HasName RuleBndr Source # 
Instance details

Defined in Language.Haskell.TH.Optics

HasName Con Source #

If a GadtC or RecGadtC has multiple Names, the leftmost Name will be chosen.

Instance details

Defined in Language.Haskell.TH.Optics

HasName TyVarBndr Source # 
Instance details

Defined in Language.Haskell.TH.Optics

class HasTypes t where Source #

Contains some amount of Types inside

Methods

types :: Traversal' t Type Source #

Traverse all the types

Instances
HasTypes Type Source # 
Instance details

Defined in Language.Haskell.TH.Optics

HasTypes TySynEqn Source # 
Instance details

Defined in Language.Haskell.TH.Optics

HasTypes Foreign Source # 
Instance details

Defined in Language.Haskell.TH.Optics

HasTypes Con Source # 
Instance details

Defined in Language.Haskell.TH.Optics

HasTypes t => HasTypes [t] Source # 
Instance details

Defined in Language.Haskell.TH.Optics

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.

class SubstType t where Source #

Provides substitution for types

Methods

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

Perform substitution for types

Instances
SubstType Type Source # 
Instance details

Defined in Language.Haskell.TH.Optics

SubstType t => SubstType [t] Source # 
Instance details

Defined in Language.Haskell.TH.Optics

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

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

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

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

_NewtypeD :: DataPrism' [TyVarBndr] Con Source #

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

_DataInstD :: DataPrism' [Type] [Con] Source #

_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)           -- Earlier versions

_NewtypeInstD :: DataPrism' [Type] Con Source #

_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)           -- Earlier versions

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

_TySynInstD :: Prism' Dec TySynEqn         -- template-haskell 2.15+
_TySynInstD :: Prism' Dec (Name, TySynEqn) -- Earlier versions

_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

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

_PatSynD :: Prism' Dec (Name, PatSynArgs, PatSynDir, Pat) -- template-haskell-2.12+
_PatSynD :: Prism' Dec (Name, PatSynType)                 -- Earlier versions

PatSynDir Prisms

PatSynArgs Prisms

Con Prisms

Overlap Prisms

SourceUnpackedness Prisms

SourceStrictness Prisms

DecidedStrictness Prisms

Foreign Prisms

Callconv Prisms

Safety Prisms

Pragma Prisms

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

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

Inline Prisms

RuleMatch Prisms

Phases Prisms

RuleBndr Prisms

AnnTarget Prisms

FunDep Prisms TODO make a lens

FixityDirection Prisms

Exp Prisms

_TupE :: Prism' Exp [Exp] Source #

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

_UnboxedTupE :: Prism' Exp [Exp] Source #

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

Body Prisms

Guard Prisms

Stmt Prisms

Range Prisms

Lit Prisms

Pat Prisms

Type Prisms

TyVarBndr Prisms

FamilyResultSig Prisms

TyLit Prisms

Role Prisms

DerivStrategy Prisms