Copyright | (c) 2023-2025 Sayo contributors (c) 2010-2011 Patrick Bahr Tom Hvitved (c) 2020 Michael Szvetits |
---|---|
License | MPL-2.0 (see the LICENSE file) AND BSD-3-Clause |
Maintainer | ymdfield@outlook.jp |
Safe Haskell | None |
Language | GHC2021 |
Data.Effect.TH.Internal
Contents
Description
Synopsis
- data EffectInfo = EffectInfo {}
- data OpInfo = OpInfo {
- opName :: Name
- opParamTypes :: [Type]
- opDataType :: Type
- opResultType :: Type
- opTyVars :: [TyVarBndrSpec]
- opCarrier :: TyVarBndr ()
- opCxt :: Cxt
- opOrder :: EffectOrder
- data EffectConf = EffectConf {}
- alterOpConf :: (OpConf -> OpConf) -> EffectConf -> EffectConf
- data OpConf = OpConf {}
- data PerformerConf = PerformerConf {
- _performerName :: String
- _doesGeneratePerformerSignature :: Bool
- _performerDoc :: Maybe String -> Q (Maybe String)
- _performerArgDoc :: Int -> Maybe String -> Q (Maybe String)
- performerConfs :: Traversal' OpConf PerformerConf
- keyedPerformerConf :: Lens' OpConf (Maybe PerformerConf)
- normalPerformerConf :: Lens' OpConf (Maybe PerformerConf)
- senderConf :: Lens' OpConf (Maybe PerformerConf)
- taggedPerformerConf :: Lens' OpConf (Maybe PerformerConf)
- doesGeneratePerformerSignature :: Lens' PerformerConf Bool
- performerArgDoc :: Lens' PerformerConf (Int -> Maybe String -> Q (Maybe String))
- performerDoc :: Lens' PerformerConf (Maybe String -> Q (Maybe String))
- performerName :: Lens' PerformerConf String
- noGenerateNormalPerformer :: EffectConf -> EffectConf
- noGenerateKeyedPerformer :: EffectConf -> EffectConf
- noGenerateTaggedPerformer :: EffectConf -> EffectConf
- noGeneratePerformerSignature :: EffectConf -> EffectConf
- noGenerateLabel :: EffectConf -> EffectConf
- noGenerateOrderInstance :: EffectConf -> EffectConf
- type EffectGenerator = ReaderT (EffectConf, Name, Info, DataInfo, EffectInfo) (WriterT [Dec] Q) ()
- genEffect :: EffectGenerator
- genFOE :: EffectGenerator
- genHOE :: EffectGenerator
- genPerformers :: EffectConf -> EffectInfo -> Q [Dec]
- genLabel :: EffectConf -> EffectInfo -> Q [Dec]
- genNormalPerformer :: OpInfo -> PerformerConf -> WriterT [Dec] Q ()
- genKeyedPerformer :: OpInfo -> PerformerConf -> WriterT [Dec] Q ()
- genTaggedPerformer :: OpInfo -> PerformerConf -> WriterT [Dec] Q ()
- genSender :: OpInfo -> PerformerConf -> WriterT [Dec] Q ()
- genPerformer :: (Exp -> Exp) -> (Type -> Type -> Type) -> ([TyVarBndrSpec] -> [TyVarBndrSpec]) -> OpInfo -> PerformerConf -> WriterT [Dec] Q ()
- genPerformerArmor :: (Type -> Type -> Type) -> ([TyVarBndrSpec] -> [TyVarBndrSpec]) -> OpInfo -> PerformerConf -> (Type -> Q Clause) -> WriterT [Dec] Q ()
- arrowChain :: Foldable t => t Type -> Type -> Type
- data DataInfo = DataInfo {}
- data ConInfo = ConInfo {}
- reifyEffect :: Name -> Q (Info, DataInfo, EffectInfo)
- analyzeEffect :: DataInfo -> Either Text EffectInfo
- tyVarName :: TyVarBndr a -> Name
- tyVarType :: TyVarBndr a -> Type
- unkindTypeRec :: Type -> Type
- unkindType :: Type -> Type
- unkindTyVar :: TyVarBndr a -> TyVarBndr a
- occurs :: Name -> Type -> Bool
- analyzeData :: Info -> Maybe DataInfo
- normalizeCon :: Con -> [ConInfo]
- normalizeNonForallCon :: Con -> [ConInfo]
Documentation
data EffectInfo Source #
Constructors
EffectInfo | |
Constructors
OpInfo | |
Fields
|
data EffectConf Source #
Constructors
EffectConf | |
Fields
|
Instances
Default EffectConf Source # | |
Defined in Data.Effect.TH.Internal Methods def :: EffectConf # |
alterOpConf :: (OpConf -> OpConf) -> EffectConf -> EffectConf Source #
Constructors
OpConf | |
data PerformerConf Source #
Constructors
PerformerConf | |
Fields
|
performerDoc :: Lens' PerformerConf (Maybe String -> Q (Maybe String)) Source #
type EffectGenerator = ReaderT (EffectConf, Name, Info, DataInfo, EffectInfo) (WriterT [Dec] Q) () Source #
genPerformers :: EffectConf -> EffectInfo -> Q [Dec] Source #
genLabel :: EffectConf -> EffectInfo -> Q [Dec] Source #
genNormalPerformer :: OpInfo -> PerformerConf -> WriterT [Dec] Q () Source #
genKeyedPerformer :: OpInfo -> PerformerConf -> WriterT [Dec] Q () Source #
genTaggedPerformer :: OpInfo -> PerformerConf -> WriterT [Dec] Q () Source #
genPerformer :: (Exp -> Exp) -> (Type -> Type -> Type) -> ([TyVarBndrSpec] -> [TyVarBndrSpec]) -> OpInfo -> PerformerConf -> WriterT [Dec] Q () Source #
genPerformerArmor :: (Type -> Type -> Type) -> ([TyVarBndrSpec] -> [TyVarBndrSpec]) -> OpInfo -> PerformerConf -> (Type -> Q Clause) -> WriterT [Dec] Q () Source #
A reified information of a datatype.
reifyEffect :: Name -> Q (Info, DataInfo, EffectInfo) Source #
analyzeEffect :: DataInfo -> Either Text EffectInfo Source #
Utility functions
unkindTypeRec :: Type -> Type Source #
Throws away all kind information from a type.
unkindType :: Type -> Type Source #
unkindTyVar :: TyVarBndr a -> TyVarBndr a Source #
Throws away the kind information of a type variable.
analyzeData :: Info -> Maybe DataInfo Source #
This function abstracts away newtype
declaration, it turns them into
data
declarations.
normalizeCon :: Con -> [ConInfo] Source #
normalizeNonForallCon :: Con -> [ConInfo] Source #