heart-core-0.3.0: An opinionated library prelude in the UnliftIO style

Safe HaskellNone
LanguageHaskell2010

Heart.Core.RIO

Description

Most definitions follow the RIO lib: https://hackage.haskell.org/package/rio-0.1.14.0/docs/RIO.html See LICENSE info in the README.

Documentation

class HasStateRef st env | env -> st where Source #

Methods

stateRefL :: Lens' env (SomeRef st) Source #

newtype RIO env a Source #

Constructors

RIO 

Fields

Instances
MonadReader env (RIO env) Source # 
Instance details

Defined in Heart.Core.RIO

Methods

ask :: RIO env env #

local :: (env -> env) -> RIO env a -> RIO env a #

reader :: (env -> a) -> RIO env a #

HasStateRef st env => MonadState st (RIO env) Source # 
Instance details

Defined in Heart.Core.RIO

Methods

get :: RIO env st #

put :: st -> RIO env () #

state :: (st -> (a, st)) -> RIO env a #

Monad (RIO env) Source # 
Instance details

Defined in Heart.Core.RIO

Methods

(>>=) :: RIO env a -> (a -> RIO env b) -> RIO env b #

(>>) :: RIO env a -> RIO env b -> RIO env b #

return :: a -> RIO env a #

fail :: String -> RIO env a #

Functor (RIO env) Source # 
Instance details

Defined in Heart.Core.RIO

Methods

fmap :: (a -> b) -> RIO env a -> RIO env b #

(<$) :: a -> RIO env b -> RIO env a #

MonadFail (RIO env) Source # 
Instance details

Defined in Heart.Core.RIO

Methods

fail :: String -> RIO env a #

Applicative (RIO env) Source # 
Instance details

Defined in Heart.Core.RIO

Methods

pure :: a -> RIO env a #

(<*>) :: RIO env (a -> b) -> RIO env a -> RIO env b #

liftA2 :: (a -> b -> c) -> RIO env a -> RIO env b -> RIO env c #

(*>) :: RIO env a -> RIO env b -> RIO env b #

(<*) :: RIO env a -> RIO env b -> RIO env a #

MonadIO (RIO env) Source # 
Instance details

Defined in Heart.Core.RIO

Methods

liftIO :: IO a -> RIO env a #

MonadThrow (RIO env) Source # 
Instance details

Defined in Heart.Core.RIO

Methods

throwM :: Exception e => e -> RIO env a #

MonadCatch (RIO env) Source # 
Instance details

Defined in Heart.Core.RIO

Methods

catch :: Exception e => RIO env a -> (e -> RIO env a) -> RIO env a #

MonadMask (RIO env) Source # 
Instance details

Defined in Heart.Core.RIO

Methods

mask :: ((forall a. RIO env a -> RIO env a) -> RIO env b) -> RIO env b #

uninterruptibleMask :: ((forall a. RIO env a -> RIO env a) -> RIO env b) -> RIO env b #

generalBracket :: RIO env a -> (a -> ExitCase b -> RIO env c) -> (a -> RIO env b) -> RIO env (b, c) #

MonadUnliftIO (RIO env) Source # 
Instance details

Defined in Heart.Core.RIO

Methods

askUnliftIO :: RIO env (UnliftIO (RIO env)) #

withRunInIO :: ((forall a. RIO env a -> IO a) -> IO b) -> RIO env b #

getStateRef :: (HasStateRef st env, MonadReader env m, MonadIO m) => m st Source #

liftRIO :: (MonadIO m, MonadReader env m) => RIO env a -> m a Source #

newSomeRef :: MonadIO m => a -> m (SomeRef a) Source #

mapRIO :: (env -> env') -> RIO env' a -> RIO env a Source #

modifySomeRef :: MonadIO m => SomeRef a -> (a -> a) -> m () Source #

modifyStateRef :: (HasStateRef st env, MonadReader env m, MonadIO m) => (st -> st) -> m () Source #

putStateRef :: (HasStateRef st env, MonadReader env m, MonadIO m) => st -> m () Source #

runRIO :: MonadIO m => env -> RIO env a -> m a Source #

writeSomeRef :: MonadIO m => SomeRef a -> a -> m () Source #