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 i a m r
- newDoc :: Member (Docs i a) effs => i -> a -> Sem effs ()
- toDocList :: Sem (Docs i a ': effs) () -> Sem effs [DocWithInfo i a]
- toDocListWith :: (i -> a -> b) -> Sem (Docs i a ': effs) () -> Sem effs [DocWithInfo i b]
- toDocListWithM :: (i -> a -> Sem effs b) -> Sem (Docs i a ': effs) () -> Sem effs [DocWithInfo i b]
- data DocWithInfo i a = DocWithInfo {}
- mapDocs :: Monad m => (i -> a -> b) -> m [DocWithInfo i a] -> m [DocWithInfo i b]
- mapDocsM :: Monad m => (i -> a -> m b) -> m [DocWithInfo i a] -> m [DocWithInfo i b]
Effect
Actions
newDoc :: Member (Docs i a) effs => i -> a -> Sem effs () Source #
Action of the Docs
Effect. Store a document.
Interpretations
toDocListWith :: (i -> a -> b) -> Sem (Docs i a ': effs) () -> Sem effs [DocWithInfo i b] Source #
Combine the interpretation and mapping step. Commonly used to "run" the effect and map the results to your desired output format.
toDocListWithM :: (i -> a -> Sem effs b) -> Sem (Docs i a ': effs) () -> Sem effs [DocWithInfo i 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 DocWithInfo i a Source #
Data type to hold one document with info of type i
and doc of type a
.
Instances
Functor (DocWithInfo i) Source # | |
Defined in Knit.Effect.Docs fmap :: (a -> b) -> DocWithInfo i a -> DocWithInfo i b # (<$) :: a -> DocWithInfo i b -> DocWithInfo i a # | |
Foldable (DocWithInfo i) Source # | |
Defined in Knit.Effect.Docs fold :: Monoid m => DocWithInfo i m -> m # foldMap :: Monoid m => (a -> m) -> DocWithInfo i a -> m # foldr :: (a -> b -> b) -> b -> DocWithInfo i a -> b # foldr' :: (a -> b -> b) -> b -> DocWithInfo i a -> b # foldl :: (b -> a -> b) -> b -> DocWithInfo i a -> b # foldl' :: (b -> a -> b) -> b -> DocWithInfo i a -> b # foldr1 :: (a -> a -> a) -> DocWithInfo i a -> a # foldl1 :: (a -> a -> a) -> DocWithInfo i a -> a # toList :: DocWithInfo i a -> [a] # null :: DocWithInfo i a -> Bool # length :: DocWithInfo i a -> Int # elem :: Eq a => a -> DocWithInfo i a -> Bool # maximum :: Ord a => DocWithInfo i a -> a # minimum :: Ord a => DocWithInfo i a -> a # sum :: Num a => DocWithInfo i a -> a # product :: Num a => DocWithInfo i a -> a # | |
Traversable (DocWithInfo i) Source # | |
Defined in Knit.Effect.Docs traverse :: Applicative f => (a -> f b) -> DocWithInfo i a -> f (DocWithInfo i b) # sequenceA :: Applicative f => DocWithInfo i (f a) -> f (DocWithInfo i a) # mapM :: Monad m => (a -> m b) -> DocWithInfo i a -> m (DocWithInfo i b) # sequence :: Monad m => DocWithInfo i (m a) -> m (DocWithInfo i a) # |
Helper Functions
mapDocs :: Monad m => (i -> a -> b) -> m [DocWithInfo i a] -> m [DocWithInfo i b] Source #
Map over the doc part of Functor m => m [DocWithInfo i a]
with an a->b
resulting in m [DocWithInfo i b]
mapDocsM :: Monad m => (i -> a -> m b) -> m [DocWithInfo i a] -> m [DocWithInfo i b] Source #
Map over the doc part of Monad m => m [DocWithInfo i a]
with a -> m b
resulting in m [DocWithInfo i b]