imm-1.2.0.0: Execute arbitrary actions for each unread element of RSS/Atom feeds

Safe HaskellNone
LanguageHaskell98

Imm.Prelude

Contents

Synopsis

Free monad utilities

type (:::) a b = (a, b) infixr 0 #

Right-associative tuple type-constructor

(+:) :: a -> b -> (a, b) infixr 0 #

Right-associative tuple data-constructor

(*:) :: (Functor f, Functor g) => (a -> f a) -> (b -> g b) -> (a, b) -> Product f g (a, b) infixr 0 #

data HLeft #

Instances

Sub HLeft a (Sum * a b) # 

Methods

inj' :: Tagged * HLeft (a a -> Sum * a b a) #

data HRight #

Instances

Sub x f g => Sub (HRight, x) f (Sum * h g) # 

Methods

inj' :: Tagged * (HRight, x) (f a -> Sum * h g a) #

data HId #

Instances

Sub HId a a # 

Methods

inj' :: Tagged * HId (a a -> a a) #

data HNo #

type family Contains a b where ... #

Equations

Contains a a = HId 
Contains a (Sum a b) = HLeft 
Contains a (Sum b c) = (HRight, Contains a c) 
Contains a b = HNo 

class Sub i sub sup where #

Minimal complete definition

inj'

Methods

inj' :: Tagged i (sub a -> sup a) #

Instances

Sub HId a a # 

Methods

inj' :: Tagged * HId (a a -> a a) #

Sub HLeft a (Sum * a b) # 

Methods

inj' :: Tagged * HLeft (a a -> Sum * a b a) #

Sub x f g => Sub (HRight, x) f (Sum * h g) # 

Methods

inj' :: Tagged * (HRight, x) (f a -> Sum * h g a) #

class (Functor sub, Functor sup) => sub :<: sup where #

A constraint f :<: g expresses that f is subsumed by g, i.e. f can be used to construct elements in g.

Minimal complete definition

inj

Methods

inj :: sub a -> sup a #

Instances

(Functor f, Functor g, Sub (Contains f g) f g) => f :<: g # 

Methods

inj :: f a -> g a #

class (Monad m, Functor f, Functor g) => PairingM f g m | f -> g where #

Minimal complete definition

pairM

Methods

pairM :: (a -> b -> m r) -> f a -> g b -> m r #

Instances

Monad m => PairingM Identity Identity m # 

Methods

pairM :: (a -> b -> m r) -> Identity a -> Identity b -> m r #

Monad m => PairingM (CoLoggerF m) LoggerF m # 

Methods

pairM :: (a -> b -> m r) -> CoLoggerF m a -> LoggerF b -> m r #

Monad m => PairingM (CoHooksF m) HooksF m # 

Methods

pairM :: (a -> b -> m r) -> CoHooksF m a -> HooksF b -> m r #

Monad m => PairingM (CoHttpClientF m) HttpClientF m # 

Methods

pairM :: (a -> b -> m r) -> CoHttpClientF m a -> HttpClientF b -> m r #

Monad m => PairingM (CoXmlParserF m) XmlParserF m # 

Methods

pairM :: (a -> b -> m r) -> CoXmlParserF m a -> XmlParserF b -> m r #

Monad m => PairingM (CoDatabaseF t m) (DatabaseF t) m # 

Methods

pairM :: (a -> b -> m r) -> CoDatabaseF t m a -> DatabaseF t b -> m r #

(PairingM f f' m, PairingM g g' m) => PairingM (Sum * f g) (Product * f' g') m # 

Methods

pairM :: (a -> b -> m r) -> Sum * f g a -> Product * f' g' b -> m r #

(PairingM f f' m, PairingM g g' m) => PairingM (Product * f g) (Sum * f' g') m # 

Methods

pairM :: (a -> b -> m r) -> Product * f g a -> Sum * f' g' b -> m r #

interpret :: PairingM f g m => (a -> b -> m r) -> Cofree f a -> FreeT g m b -> m r #

Shortcuts

type LText = Text #

type Text = Text #

show :: (Show a, IsString b) => a -> b #

Generic show

io :: MonadIO m => IO a -> m a #

Shortcut to liftIO

(<++>) :: Doc -> Doc -> Doc #

Infix operator for line