Copyright | (C) 2013-2016 Eric Mertens Edward Kmett; 2018 Monadfix |
---|---|
License | BSD-style (see the file LICENSE) |
Safe Haskell | Safe |
Language | Haskell2010 |
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.
Synopsis
- class HasName t where
- newNames :: String -> Int -> Q [Name]
- class HasTypeVars t where
- typeVarsEx :: Set Name -> Traversal' t Name
- typeVars :: HasTypeVars t => Traversal' t Name
- substTypeVars :: HasTypeVars t => Map Name Name -> t -> t
- datatypeTypeKinded :: DatatypeInfo -> Type
- inlinePragma :: Name -> [DecQ]
- conAppsT :: Name -> [Type] -> Type
- quantifyType :: Cxt -> Type -> Type
- quantifyType' :: Set Name -> Cxt -> Type -> Type
- tvbToType :: TyVarBndr_ flag -> Type
- unSigT :: Type -> Type
- elemOf :: Eq a => Getting (Endo [a]) s a -> a -> s -> Bool
- lengthOf :: Getting (Endo [a]) s a -> s -> Int
- setOf :: Ord a => Getting (Endo [a]) s a -> s -> Set a
- _ForallT :: Traversal' Type ([TyVarBndrSpec], Cxt, Type)
Name utilities
class HasName t where Source #
Has a 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.
typeVarsEx :: Set Name -> Traversal' t Name Source #
Instances
HasTypeVars Type Source # | |
Defined in Lens.Micro.TH.Internal typeVarsEx :: Set Name -> Traversal' Type Name Source # | |
HasTypeVars Name Source # | |
Defined in Lens.Micro.TH.Internal typeVarsEx :: Set Name -> Traversal' Name Name Source # | |
HasTypeVars Con Source # | |
Defined in Lens.Micro.TH.Internal typeVarsEx :: Set Name -> Traversal' Con Name Source # | |
HasTypeVars t => HasTypeVars [t] Source # | |
Defined in Lens.Micro.TH.Internal typeVarsEx :: Set Name -> Traversal' [t] Name Source # | |
HasTypeVars t => HasTypeVars (Maybe t) Source # | |
Defined in Lens.Micro.TH.Internal typeVarsEx :: Set Name -> Traversal' (Maybe t) Name Source # | |
HasTypeVars (TyVarBndr_ flag) Source # | |
Defined in Lens.Micro.TH.Internal typeVarsEx :: Set Name -> Traversal' (TyVarBndr_ flag) Name Source # |
typeVars :: HasTypeVars t => Traversal' t Name Source #
substTypeVars :: HasTypeVars t => Map Name Name -> t -> t Source #
Miscellaneous utilities
inlinePragma :: Name -> [DecQ] Source #
Generate an INLINE pragma.
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.
Lens functions
_ForallT :: Traversal' Type ([TyVarBndrSpec], Cxt, Type) Source #