| Copyright | (C) 2013-2016 Edward Kmett and Eric Mertens | 
|---|---|
| License | BSD-style (see the file LICENSE) | 
| Maintainer | Edward Kmett <[email protected]> | 
| Stability | experimental | 
| Portability | non-portable | 
| Safe Haskell | Safe | 
| Language | Haskell2010 | 
Control.Lens.Internal.TH
Description
Synopsis
- appsT :: TypeQ -> [TypeQ] -> TypeQ
 - appsE1 :: ExpQ -> [ExpQ] -> ExpQ
 - toTupleT :: [TypeQ] -> TypeQ
 - toTupleE :: [ExpQ] -> ExpQ
 - toTupleP :: [PatQ] -> PatQ
 - conAppsT :: Name -> [Type] -> Type
 - newNames :: String -> Int -> Q [Name]
 - unfoldType :: Type -> (Type, [Type])
 - datatypeTypeKinded :: DatatypeInfo -> Type
 - dropSigsIfNonDataFam :: DatatypeInfo -> [Type] -> [Type]
 - quantifyType :: Cxt -> Type -> Type
 - quantifyType' :: Set Name -> Cxt -> Type -> Type
 - tvbToType :: TyVarBndr_ flag -> Type
 - unSigT :: Type -> Type
 - isDataFamily :: DatatypeVariant -> Bool
 - traversalTypeName :: Name
 - traversal'TypeName :: Name
 - lensTypeName :: Name
 - lens'TypeName :: Name
 - isoTypeName :: Name
 - iso'TypeName :: Name
 - getterTypeName :: Name
 - foldTypeName :: Name
 - prismTypeName :: Name
 - prism'TypeName :: Name
 - reviewTypeName :: Name
 - wrappedTypeName :: Name
 - unwrappedTypeName :: Name
 - rewrappedTypeName :: Name
 - _wrapped'ValName :: Name
 - isoValName :: Name
 - prismValName :: Name
 - untoValName :: Name
 - phantomValName :: Name
 - phantom2 :: (Functor f, Contravariant f) => f a -> f b
 - composeValName :: Name
 - idValName :: Name
 - fmapValName :: Name
 - pureValName :: Name
 - apValName :: Name
 - rightDataName :: Name
 - leftDataName :: Name
 - inlinePragma :: Name -> [DecQ]
 
Documentation
Generate many new names from a given base name.
dropSigsIfNonDataFam :: DatatypeInfo -> [Type] -> [Type] Source #
In an effort to prevent users from having to enable KindSignatures every time that they use lens' TH functionality, we strip off reified kind annotations from when:
- The kind of a type does not contain any kind variables. If it *does*
    contain kind variables, we want to preserve them so that we can generate
    type signatures that preserve the dependency order of kind and type
    variables. (The data types in test/T917.hs contain examples where this
    is important.) This will require enabling 
PolyKinds, but sincePolyKindsimpliesKindSignatures, we can at least accomplish two things at once. - The data type is not an instance of a data family. We make an exception
    for data family instances, since the presence or absence of a kind
    annotation can be the difference between typechecking or not.
    (See T917DataFam in tests/T917.hs for an example.) Moreover, the
    
TypeFamiliesextension impliesKindSignatures. 
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.
isDataFamily :: DatatypeVariant -> Bool Source #
lensTypeName :: Name Source #
lens'TypeName :: Name Source #
isoTypeName :: Name Source #
iso'TypeName :: Name Source #
foldTypeName :: Name Source #
prismTypeName :: Name Source #
isoValName :: Name Source #
prismValName :: Name Source #
untoValName :: Name Source #
phantom2 :: (Functor f, Contravariant f) => f a -> f b Source #
fmapValName :: Name Source #
pureValName :: Name Source #
rightDataName :: Name Source #
leftDataName :: Name Source #
inlinePragma :: Name -> [DecQ] Source #