lens-4.13.2: Lenses, Folds and Traversals

Copyright(C) 2012-2016 Edward Kmett
LicenseBSD-style (see the file LICENSE)
MaintainerEdward Kmett <ekmett@gmail.com>
Safe HaskellTrustworthy




Lenses, Prisms, and Traversals for working with Template Haskell



class HasName t where Source

Has a Name


name :: Lens' t Name Source

Extract (or modify) the Name of something


HasName Name Source 
HasName TyVarBndr Source 
HasName Foreign Source 
HasName RuleBndr Source 
HasName Con Source

On template-haskell- or later, if a GadtC or RecGadtC has multiple Names, the leftmost Name will be chosen.

class HasTypes t where Source

Contains some amount of Types inside


types :: Traversal' t Type Source

Traverse all the types

class HasTypeVars t where Source

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


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


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

Perform substitution for types


SubstType Type Source 
SubstType t => SubstType [t] Source 


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 StrictType Source

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

conNamedFields :: Traversal' Con VarStrictType Source

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


Loc Lenses

FunDep Lenses

Match Lenses

Fixity Lenses

Clause Lenses

FieldExp Lenses

FieldPat Lenses

TySynEqn Lenses


Info Prisms

Dec Prisms

Con Prisms

Strict 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

TyLit Prisms

Role Prisms