knit-haskell-0.8.0.0: a minimal Rmarkdown sort-of-thing for haskell, by way of Pandoc
Copyright(c) Adam Conner-Sax 2019
LicenseBSD-3-Clause
Maintaineradam_conner_sax@yahoo.com
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

Knit.Effect.Docs

Description

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

Effect

data Docs i a m r Source #

GADT to represent storing a document and some info for processing it.

Actions

newDoc :: Member (Docs i a) effs => i -> a -> Sem effs () Source #

Action of the Docs Effect. Store a document.

Interpretations

toDocList :: Sem (Docs i a ': effs) () -> Sem effs [DocWithInfo i a] Source #

Interpret Docs (via Writer), producing a list of DocWithInfo i a

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.

Constructors

DocWithInfo 

Fields

Instances

Instances details
Functor (DocWithInfo i) Source # 
Instance details

Defined in Knit.Effect.Docs

Methods

fmap :: (a -> b) -> DocWithInfo i a -> DocWithInfo i b #

(<$) :: a -> DocWithInfo i b -> DocWithInfo i a #

Foldable (DocWithInfo i) Source # 
Instance details

Defined in Knit.Effect.Docs

Methods

fold :: Monoid m => DocWithInfo i m -> m #

foldMap :: Monoid m => (a -> m) -> DocWithInfo i a -> 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 # 
Instance details

Defined in Knit.Effect.Docs

Methods

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]