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 => MonadState s (GadgetT a s m) # | |
Monad m => MonadReader a (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 a0 s0 m0 c0) # | |
(~) * (GadgetT a0 s0 m0 c0) t0 => Rewrapped (GadgetT a1 s1 m1 c1) t0 # | |
type Zoomed (GadgetT a s m) # | |
type Magnified (GadgetT a s m) # | |
type Unwrapped (GadgetT a0 s0 m0 c0) # | |
_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') #