Copyright | (c) Adam Conner-Sax 2019 |
---|---|
License | BSD-3-Clause |
Maintainer | adam_conner_sax@yahoo.com |
Stability | experimental |
Safe Haskell | None |
Language | Haskell2010 |
Polysemy effect used by knit-haskell when one code-base is used to create multiple docs. Each can be created and then stored in the list maintained by this effect. Then, when the effects are "run", this list can be processed to produce the required output.
Synopsis
- data Docs a m r
- newDoc :: Member (Docs a) effs => Text -> a -> Semantic effs ()
- toNamedDocList :: Typeable a => Semantic (Docs a ': effs) () -> Semantic effs [NamedDoc a]
- toNamedDocListWith :: Typeable a => (a -> b) -> Semantic (Docs a ': effs) () -> Semantic effs [NamedDoc b]
- toNamedDocListWithM :: Typeable a => (a -> Semantic effs b) -> Semantic (Docs a ': effs) () -> Semantic effs [NamedDoc b]
- data NamedDoc a = NamedDoc {}
- mapNamedDocs :: Monad m => (a -> b) -> m [NamedDoc a] -> m [NamedDoc b]
- mapNamedDocsM :: Monad m => (a -> m b) -> m [NamedDoc a] -> m [NamedDoc b]
Effect
Actions
newDoc :: Member (Docs a) effs => Text -> a -> Semantic effs () Source #
Action of the Docs
Effect. Store a named document.
Interpretations
toNamedDocListWith :: Typeable a => (a -> b) -> Semantic (Docs a ': effs) () -> Semantic effs [NamedDoc b] Source #
Combine the interpretation and mapping step. Commonly used to "run" the effect and map the results to your deisred output format.
toNamedDocListWithM :: Typeable a => (a -> Semantic effs b) -> Semantic (Docs a ': effs) () -> Semantic effs [NamedDoc b] Source #
Combine the interpretation and effectful mapping step. Commonly used to "run" the effect and map the results to your deisred output format.
Helper Types
Data type to hold one named document of type a
.
Instances
Functor NamedDoc Source # | |
Foldable NamedDoc Source # | |
Defined in Knit.Effect.Docs fold :: Monoid m => NamedDoc m -> m # foldMap :: Monoid m => (a -> m) -> NamedDoc a -> m # foldr :: (a -> b -> b) -> b -> NamedDoc a -> b # foldr' :: (a -> b -> b) -> b -> NamedDoc a -> b # foldl :: (b -> a -> b) -> b -> NamedDoc a -> b # foldl' :: (b -> a -> b) -> b -> NamedDoc a -> b # foldr1 :: (a -> a -> a) -> NamedDoc a -> a # foldl1 :: (a -> a -> a) -> NamedDoc a -> a # elem :: Eq a => a -> NamedDoc a -> Bool # maximum :: Ord a => NamedDoc a -> a # minimum :: Ord a => NamedDoc a -> a # | |
Traversable NamedDoc Source # | |