eve-0.1.9.0: An extensible event framework

Safe HaskellNone
LanguageHaskell2010

Eve.Internal.Actions

Synopsis

Documentation

newtype AppF base m next Source #

A Free Functor for storing lifted App actions.

Constructors

RunApp (StateT base m next) 
Instances
Functor m => Functor (AppF base m) Source # 
Instance details

Defined in Eve.Internal.Actions

Methods

fmap :: (a -> b) -> AppF base m a -> AppF base m b #

(<$) :: a -> AppF base m b -> AppF base m a #

Monad m => Applicative (AppF base m) Source # 
Instance details

Defined in Eve.Internal.Actions

Methods

pure :: a -> AppF base m a #

(<*>) :: AppF base m (a -> b) -> AppF base m a -> AppF base m b #

liftA2 :: (a -> b -> c) -> AppF base m a -> AppF base m b -> AppF base m c #

(*>) :: AppF base m a -> AppF base m b -> AppF base m b #

(<*) :: AppF base m a -> AppF base m b -> AppF base m a #

Monad n => MonadFree (AppF base n) (ActionT base zoomed n) Source # 
Instance details

Defined in Eve.Internal.Actions

Methods

wrap :: AppF base n (ActionT base zoomed n a) -> ActionT base zoomed n a #

newtype ActionT base zoomed m a Source #

Base Action type. Allows paramaterization over application state, zoomed state and underlying monad.

Constructors

ActionT 

Fields

Instances
Monad m => MonadState zoomed (ActionT base zoomed m) Source # 
Instance details

Defined in Eve.Internal.Actions

Methods

get :: ActionT base zoomed m zoomed #

put :: zoomed -> ActionT base zoomed m () #

state :: (zoomed -> (a, zoomed)) -> ActionT base zoomed m a #

MonadTrans (ActionT base zoomed) Source # 
Instance details

Defined in Eve.Internal.Actions

Methods

lift :: Monad m => m a -> ActionT base zoomed m a #

Monad n => MonadFree (AppF base n) (ActionT base zoomed n) Source # 
Instance details

Defined in Eve.Internal.Actions

Methods

wrap :: AppF base n (ActionT base zoomed n a) -> ActionT base zoomed n a #

Monad m => Monad (ActionT base zoomed m) Source # 
Instance details

Defined in Eve.Internal.Actions

Methods

(>>=) :: ActionT base zoomed m a -> (a -> ActionT base zoomed m b) -> ActionT base zoomed m b #

(>>) :: ActionT base zoomed m a -> ActionT base zoomed m b -> ActionT base zoomed m b #

return :: a -> ActionT base zoomed m a #

fail :: String -> ActionT base zoomed m a #

Monad m => Functor (ActionT base zoomed m) Source # 
Instance details

Defined in Eve.Internal.Actions

Methods

fmap :: (a -> b) -> ActionT base zoomed m a -> ActionT base zoomed m b #

(<$) :: a -> ActionT base zoomed m b -> ActionT base zoomed m a #

Monad m => Applicative (ActionT base zoomed m) Source # 
Instance details

Defined in Eve.Internal.Actions

Methods

pure :: a -> ActionT base zoomed m a #

(<*>) :: ActionT base zoomed m (a -> b) -> ActionT base zoomed m a -> ActionT base zoomed m b #

liftA2 :: (a -> b -> c) -> ActionT base zoomed m a -> ActionT base zoomed m b -> ActionT base zoomed m c #

(*>) :: ActionT base zoomed m a -> ActionT base zoomed m b -> ActionT base zoomed m b #

(<*) :: ActionT base zoomed m a -> ActionT base zoomed m b -> ActionT base zoomed m a #

MonadIO m => MonadIO (ActionT base zoomed m) Source # 
Instance details

Defined in Eve.Internal.Actions

Methods

liftIO :: IO a -> ActionT base zoomed m a #

Monad m => Zoom (ActionT base s m) (ActionT base t m) s t Source # 
Instance details

Defined in Eve.Internal.Actions

Methods

zoom :: LensLike' (Zoomed (ActionT base s m) c) t s -> ActionT base s m c -> ActionT base t m c #

(Semigroup a, Monad m) => Semigroup (ActionT base zoomed m a) Source # 
Instance details

Defined in Eve.Internal.Actions

Methods

(<>) :: ActionT base zoomed m a -> ActionT base zoomed m a -> ActionT base zoomed m a #

sconcat :: NonEmpty (ActionT base zoomed m a) -> ActionT base zoomed m a #

stimes :: Integral b => b -> ActionT base zoomed m a -> ActionT base zoomed m a #

(Monoid a, Monad m) => Monoid (ActionT base zoomed m a) Source # 
Instance details

Defined in Eve.Internal.Actions

Methods

mempty :: ActionT base zoomed m a #

mappend :: ActionT base zoomed m a -> ActionT base zoomed m a -> ActionT base zoomed m a #

mconcat :: [ActionT base zoomed m a] -> ActionT base zoomed m a #

type Zoomed (ActionT base zoomed m) Source #

Allows zooming Actions.

Instance details

Defined in Eve.Internal.Actions

type Zoomed (ActionT base zoomed m) = Zoomed (FreeT (AppF base m) (StateT zoomed m))

type AppT s m a = ActionT s s m a Source #

An App has the same base and zoomed values.

runEve :: Monad m => base -> AppT base m a -> m (a, base) Source #

Runs an application and returns the value and state.

evalEve :: Monad m => base -> AppT base m a -> m a Source #

Runs an application and returns the resulting value.

execEve :: Monad m => base -> AppT base m a -> m base Source #

Runs an application and returns the resulting state.

runApp :: Monad m => AppT base m a -> ActionT base zoomed m a Source #

Allows you to run an App inside of an Action

runAction :: (HasStates t, Functor (Zoomed m c), Default s, Typeable s, Zoom m n s t) => m c -> n c Source #

This runs an Action MyState a over the MyState which is stored in the currently focused state and returns the result. Use runActionOver if you'd like to specify a particular MyState which is accessed by a Lens or Traversal.

runActionOver :: Zoom m n s t => LensLike' (Zoomed m c) t s -> m c -> n c Source #

Given a Lens or Traversal or LensLike from Control.Lens which focuses the state (t) of an Action from a base state (s), this will convert Action t a -> Action s a so that it may be run in an Action s a