heftia-0.3.1.0: higher-order effects done right
Safe HaskellSafe-Inferred
LanguageGHC2021

Control.Hefty

Documentation

newtype Hefty (f :: InsClass -> Type -> Type) (e :: SigClass) (a :: Type) Source #

Constructors

Hefty 

Fields

Instances

Instances details
(Freer c fr, InjectInsBy key e (e' (Hefty fr e'))) => SendInsBy (key :: k) e (Hefty fr e') Source # 
Instance details

Defined in Control.Hefty

Methods

sendInsBy :: e a -> Hefty fr e' a #

(Freer c fr, InjectSigBy key e e') => SendSigBy (key :: k) e (Hefty fr e') Source # 
Instance details

Defined in Control.Hefty

Methods

sendSigBy :: e (Hefty fr e') a -> Hefty fr e' a #

(Freer c fr, InjectInsBy ReaderKey (Ask r) (e (Hefty fr e)), InjectSigBy ReaderKey (Local r) e, InjectInsBy WriterKey (Tell w) (e (Hefty fr e)), InjectSigBy WriterKey (WriterH w) e, InjectInsBy StateKey (State s) (e (Hefty fr e)), Monoid w, Monad (fr (e (Hefty fr e)))) => MonadRWS r w s (Hefty fr e) Source # 
Instance details

Defined in Control.Hefty

(Freer c fr, InjectIns e (e' (Hefty fr e'))) => SendIns e (Hefty fr e') Source # 
Instance details

Defined in Control.Hefty

Methods

sendIns :: e a -> Hefty fr e' a #

(Freer c fr, InjectSig e e') => SendSig e (Hefty fr e') Source # 
Instance details

Defined in Control.Hefty

Methods

sendSig :: e (Hefty fr e') a -> Hefty fr e' a #

(Freer c fr, InjectInsBy ReaderKey (Ask r) (e (Hefty fr e)), InjectSigBy ReaderKey (Local r) e, Monad (fr (e (Hefty fr e)))) => MonadReader r (Hefty fr e) Source # 
Instance details

Defined in Control.Hefty

Methods

ask :: Hefty fr e r #

local :: (r -> r) -> Hefty fr e a -> Hefty fr e a #

reader :: (r -> a) -> Hefty fr e a #

(Freer c fr, InjectInsBy StateKey (State s) (e (Hefty fr e)), Monad (fr (e (Hefty fr e)))) => MonadState s (Hefty fr e) Source # 
Instance details

Defined in Control.Hefty

Methods

get :: Hefty fr e s #

put :: s -> Hefty fr e () #

state :: (s -> (a, s)) -> Hefty fr e a #

(Freer c fr, InjectInsBy WriterKey (Tell w) (e (Hefty fr e)), InjectSigBy WriterKey (WriterH w) e, Monoid w, Monad (fr (e (Hefty fr e)))) => MonadWriter w (Hefty fr e) Source # 
Instance details

Defined in Control.Hefty

Methods

writer :: (a, w) -> Hefty fr e a #

tell :: w -> Hefty fr e () #

listen :: Hefty fr e a -> Hefty fr e (a, w) #

pass :: Hefty fr e (a, w -> w) -> Hefty fr e a #

(MonadBase b (f (e (Hefty f e))), Monad b) => MonadBase b (Hefty f e) Source # 
Instance details

Defined in Control.Hefty

Methods

liftBase :: b α -> Hefty f e α #

(Freer c fr, InjectIns Fail (e (Hefty fr e)), Monad (fr (e (Hefty fr e)))) => MonadFail (Hefty fr e) Source # 
Instance details

Defined in Control.Hefty

Methods

fail :: String -> Hefty fr e a #

(Freer c fr, InjectSig Fix e, Monad (fr (e (Hefty fr e)))) => MonadFix (Hefty fr e) Source # 
Instance details

Defined in Control.Hefty

Methods

mfix :: (a -> Hefty fr e a) -> Hefty fr e a #

(Freer c fr, InjectIns IO (e (Hefty fr e)), Monad (fr (e (Hefty fr e)))) => MonadIO (Hefty fr e) Source # 
Instance details

Defined in Control.Hefty

Methods

liftIO :: IO a -> Hefty fr e a #

Foldable (f (e (Hefty f e))) => Foldable (Hefty f e) Source # 
Instance details

Defined in Control.Hefty

Methods

fold :: Monoid m => Hefty f e m -> m #

foldMap :: Monoid m => (a -> m) -> Hefty f e a -> m #

foldMap' :: Monoid m => (a -> m) -> Hefty f e a -> m #

foldr :: (a -> b -> b) -> b -> Hefty f e a -> b #

foldr' :: (a -> b -> b) -> b -> Hefty f e a -> b #

foldl :: (b -> a -> b) -> b -> Hefty f e a -> b #

foldl' :: (b -> a -> b) -> b -> Hefty f e a -> b #

foldr1 :: (a -> a -> a) -> Hefty f e a -> a #

foldl1 :: (a -> a -> a) -> Hefty f e a -> a #

toList :: Hefty f e a -> [a] #

null :: Hefty f e a -> Bool #

length :: Hefty f e a -> Int #

elem :: Eq a => a -> Hefty f e a -> Bool #

maximum :: Ord a => Hefty f e a -> a #

minimum :: Ord a => Hefty f e a -> a #

sum :: Num a => Hefty f e a -> a #

product :: Num a => Hefty f e a -> a #

Traversable (f (e (Hefty f e))) => Traversable (Hefty f e) Source # 
Instance details

Defined in Control.Hefty

Methods

traverse :: Applicative f0 => (a -> f0 b) -> Hefty f e a -> f0 (Hefty f e b) #

sequenceA :: Applicative f0 => Hefty f e (f0 a) -> f0 (Hefty f e a) #

mapM :: Monad m => (a -> m b) -> Hefty f e a -> m (Hefty f e b) #

sequence :: Monad m => Hefty f e (m a) -> m (Hefty f e a) #

(Freer c fr, InjectIns Empty (e (Hefty fr e)), InjectSig ChooseH e, Applicative (fr (e (Hefty fr e)))) => Alternative (Hefty fr e) Source # 
Instance details

Defined in Control.Hefty

Methods

empty :: Hefty fr e a #

(<|>) :: Hefty fr e a -> Hefty fr e a -> Hefty fr e a #

some :: Hefty fr e a -> Hefty fr e [a] #

many :: Hefty fr e a -> Hefty fr e [a] #

Applicative (f (e (Hefty f e))) => Applicative (Hefty f e) Source # 
Instance details

Defined in Control.Hefty

Methods

pure :: a -> Hefty f e a #

(<*>) :: Hefty f e (a -> b) -> Hefty f e a -> Hefty f e b #

liftA2 :: (a -> b -> c) -> Hefty f e a -> Hefty f e b -> Hefty f e c #

(*>) :: Hefty f e a -> Hefty f e b -> Hefty f e b #

(<*) :: Hefty f e a -> Hefty f e b -> Hefty f e a #

Functor (f (e (Hefty f e))) => Functor (Hefty f e) Source # 
Instance details

Defined in Control.Hefty

Methods

fmap :: (a -> b) -> Hefty f e a -> Hefty f e b #

(<$) :: a -> Hefty f e b -> Hefty f e a #

Monad (f (e (Hefty f e))) => Monad (Hefty f e) Source # 
Instance details

Defined in Control.Hefty

Methods

(>>=) :: Hefty f e a -> (a -> Hefty f e b) -> Hefty f e b #

(>>) :: Hefty f e a -> Hefty f e b -> Hefty f e b #

return :: a -> Hefty f e a #

(Freer c fr, InjectIns Empty (e (Hefty fr e)), InjectSig ChooseH e, Monad (fr (e (Hefty fr e)))) => MonadPlus (Hefty fr e) Source # 
Instance details

Defined in Control.Hefty

Methods

mzero :: Hefty fr e a #

mplus :: Hefty fr e a -> Hefty fr e a -> Hefty fr e a #

(Freer c fr, InjectIns IO (e (Hefty fr e)), InjectSig UnliftIO e, Monad (fr (e (Hefty fr e)))) => MonadUnliftIO (Hefty fr e) Source # 
Instance details

Defined in Control.Hefty

Methods

withRunInIO :: ((forall a. Hefty fr e a -> IO a) -> IO b) -> Hefty fr e b #

Read (f (e (Hefty f e)) a) => Read (Hefty f e a) Source # 
Instance details

Defined in Control.Hefty

Methods

readsPrec :: Int -> ReadS (Hefty f e a) #

readList :: ReadS [Hefty f e a] #

readPrec :: ReadPrec (Hefty f e a) #

readListPrec :: ReadPrec [Hefty f e a] #

Show (f (e (Hefty f e)) a) => Show (Hefty f e a) Source # 
Instance details

Defined in Control.Hefty

Methods

showsPrec :: Int -> Hefty f e a -> ShowS #

show :: Hefty f e a -> String #

showList :: [Hefty f e a] -> ShowS #

Eq (f (e (Hefty f e)) a) => Eq (Hefty f e a) Source # 
Instance details

Defined in Control.Hefty

Methods

(==) :: Hefty f e a -> Hefty f e a -> Bool #

(/=) :: Hefty f e a -> Hefty f e a -> Bool #

Ord (f (e (Hefty f e)) a) => Ord (Hefty f e a) Source # 
Instance details

Defined in Control.Hefty

Methods

compare :: Hefty f e a -> Hefty f e a -> Ordering #

(<) :: Hefty f e a -> Hefty f e a -> Bool #

(<=) :: Hefty f e a -> Hefty f e a -> Bool #

(>) :: Hefty f e a -> Hefty f e a -> Bool #

(>=) :: Hefty f e a -> Hefty f e a -> Bool #

max :: Hefty f e a -> Hefty f e a -> Hefty f e a #

min :: Hefty f e a -> Hefty f e a -> Hefty f e a #

overHefty :: (f (e (Hefty f e)) a -> f' (e' (Hefty f' e')) b) -> Hefty f e a -> Hefty f' e' b Source #

class InjectSig e (e' :: SigClass) where Source #

Methods

injectSig :: e f ~> e' f Source #

Instances

Instances details
MemberRec u e ehs => InjectSig e (EffUnion u ehs efs) Source # 
Instance details

Defined in Control.Effect.Hefty

Methods

injectSig :: forall (f :: Type -> Type). e f ~> EffUnion u ehs efs f Source #

class InjectSigBy key e (e' :: SigClass) | key e' -> e where Source #

Methods

injectSigBy :: e f ~> e' f Source #

Instances

Instances details
(MemberRec u (key ##> e) ehs, (key ##> e) ~ FromJust (Lookup key ehs)) => InjectSigBy (key :: k) e (EffUnion u ehs efs) Source # 
Instance details

Defined in Control.Effect.Hefty

Methods

injectSigBy :: forall (f :: Type -> Type). e f ~> EffUnion u ehs efs f Source #