Safe Haskell | None |
---|---|
Language | Haskell2010 |
Glazier.Gadget
- newtype GadgetT a s m c = GadgetT {
- runGadgetT :: ReaderT a (StateT s m) c
- type Gadget a s = GadgetT a s Identity
- _GadgetT :: Iso (GadgetT a s m c) (GadgetT a' s' m' c') (a -> s -> m (c, s)) (a' -> s' -> m' (c', s'))
- _GadgetT' :: Iso' (GadgetT a s m c) (a -> s -> m (c, s))
- mkGadgetT' :: (a -> s -> m (c, s)) -> GadgetT a s m c
- runGadgetT' :: GadgetT a s m c -> a -> s -> m (c, s)
- belowGadgetT :: ((a -> s -> m (c, s)) -> a' -> s' -> m' (c', s')) -> GadgetT a s m c -> GadgetT a' s' m' c'
- underGadgetT :: (ReaderT a (StateT s m) c -> ReaderT a' (StateT s' m') c') -> GadgetT a s m c -> GadgetT a' s' m' c'
- overGadgetT :: (GadgetT a s m c -> GadgetT a' s' m' c') -> ReaderT a (StateT s m) c -> ReaderT a' (StateT s' m') c'
- aboveGadgetT :: (GadgetT a s m c -> GadgetT a' s' m' c') -> (a -> s -> m (c, s)) -> a' -> s' -> m' (c', s')
Documentation
The Elm update function is a -> s -> (s, c)
This is isomorphic to ReaderT a (State s) c
ie, given an action "a", and a current state "s", return the new state "s"
and any commands "c" that need to be interpreted externally (eg. download file).
This is named Gadget instead of Update to avoid confusion with update from Data.Map
Constructors
GadgetT | |
Fields
|
Instances
Monad m => MonadReader a (GadgetT a s m) # | |
Monad m => MonadState s (GadgetT a s m) # | |
MFunctor * (GadgetT a s) # | |
MonadTrans (GadgetT a s) # | |
Monad m => Monad (GadgetT a s m) # | |
Functor m => Functor (GadgetT a s m) # | |
MonadFix m => MonadFix (GadgetT a s m) # | |
MonadFail m => MonadFail (GadgetT a s m) # | |
Monad m => Applicative (GadgetT a s m) # | |
MonadIO m => MonadIO (GadgetT a s m) # | |
MonadPlus m => Alternative (GadgetT a s m) # | |
MonadPlus m => MonadPlus (GadgetT a s m) # | |
Monad m => Zoom (GadgetT a s m) (GadgetT a t m) s t # | |
Monad m => Magnify (GadgetT a s m) (GadgetT b s m) a b # | |
(Monad m, Semigroup c) => Semigroup (GadgetT a s m c) # | |
(Monad m, Monoid c) => Monoid (GadgetT a s m c) # | |
Wrapped (GadgetT a s m c) # | |
(~) * (GadgetT a1 s1 m1 c1) t => Rewrapped (GadgetT a2 s2 m2 c2) t # | |
type Zoomed (GadgetT a s m) # | |
type Magnified (GadgetT a s m) # | |
type Unwrapped (GadgetT a s m c) # | |
_GadgetT :: Iso (GadgetT a s m c) (GadgetT a' s' m' c') (a -> s -> m (c, s)) (a' -> s' -> m' (c', s')) #
mkGadgetT' :: (a -> s -> m (c, s)) -> GadgetT a s m c #
runGadgetT' :: GadgetT a s m c -> a -> s -> m (c, s) #
belowGadgetT :: ((a -> s -> m (c, s)) -> a' -> s' -> m' (c', s')) -> GadgetT a s m c -> GadgetT a' s' m' c' #
underGadgetT :: (ReaderT a (StateT s m) c -> ReaderT a' (StateT s' m') c') -> GadgetT a s m c -> GadgetT a' s' m' c' #
overGadgetT :: (GadgetT a s m c -> GadgetT a' s' m' c') -> ReaderT a (StateT s m) c -> ReaderT a' (StateT s' m') c' #
aboveGadgetT :: (GadgetT a s m c -> GadgetT a' s' m' c') -> (a -> s -> m (c, s)) -> a' -> s' -> m' (c', s') #