microlens-th- Automatic generation of record lenses for microlens

Copyright(C) 2013-2016 Eric Mertens Edward Kmett; 2018 Monadfix
LicenseBSD-style (see the file LICENSE)
Safe HaskellSafe




Functions used by Lens.Micro.TH. This is an internal module and it may go away or change at any time; do not depend on it.


Name utilities

class HasName t where Source #

Has a Name


name :: Lens' t Name Source #

Extract (or modify) the Name of something

HasName Name Source # 
Instance details

Defined in Lens.Micro.TH.Internal

HasName Con Source #

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

Instance details

Defined in Lens.Micro.TH.Internal

HasName TyVarBndr Source # 
Instance details

Defined in Lens.Micro.TH.Internal

newNames Source #


:: String

base name

-> Int


-> Q [Name] 

Generate many new names from a given base name.

Type variable utilities

class HasTypeVars t where Source #

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

Miscellaneous utilities

inlinePragma :: Name -> [DecQ] Source #

Generate an INLINE pragma.

conAppsT :: Name -> [Type] -> Type Source #

Apply arguments to a type constructor.

quantifyType :: Cxt -> Type -> Type Source #

Template Haskell wants type variables declared in a forall, so we find all free type variables in a given type and declare them.

quantifyType' :: Set Name -> Cxt -> Type -> Type Source #

This function works like quantifyType except that it takes a list of variables to exclude from quantification.