glazier-0.11.0.0: Composable widgets framework

Safe HaskellNone
LanguageHaskell2010

Glazier.Gadget

Synopsis

Documentation

newtype GadgetT a s m c Source #

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) Source # 

Methods

get :: GadgetT a s m s #

put :: s -> GadgetT a s m () #

state :: (s -> (a, s)) -> GadgetT a s m a #

Monad m => MonadReader a (GadgetT a s m) Source # 

Methods

ask :: GadgetT a s m a #

local :: (a -> a) -> GadgetT a s m a -> GadgetT a s m a #

reader :: (a -> a) -> GadgetT a s m a #

MFunctor (GadgetT a s) Source # 

Methods

hoist :: Monad m => (forall b. m b -> n b) -> GadgetT a s m b -> GadgetT a s n b #

MonadTrans (GadgetT a s) Source # 

Methods

lift :: Monad m => m a -> GadgetT a s m a #

Monad m => Monad (GadgetT a s m) Source # 

Methods

(>>=) :: GadgetT a s m a -> (a -> GadgetT a s m b) -> GadgetT a s m b #

(>>) :: GadgetT a s m a -> GadgetT a s m b -> GadgetT a s m b #

return :: a -> GadgetT a s m a #

fail :: String -> GadgetT a s m a #

Functor m => Functor (GadgetT a s m) Source # 

Methods

fmap :: (a -> b) -> GadgetT a s m a -> GadgetT a s m b #

(<$) :: a -> GadgetT a s m b -> GadgetT a s m a #

MonadFix m => MonadFix (GadgetT a s m) Source # 

Methods

mfix :: (a -> GadgetT a s m a) -> GadgetT a s m a #

MonadFail m => MonadFail (GadgetT a s m) Source # 

Methods

fail :: String -> GadgetT a s m a #

Monad m => Applicative (GadgetT a s m) Source # 

Methods

pure :: a -> GadgetT a s m a #

(<*>) :: GadgetT a s m (a -> b) -> GadgetT a s m a -> GadgetT a s m b #

(*>) :: GadgetT a s m a -> GadgetT a s m b -> GadgetT a s m b #

(<*) :: GadgetT a s m a -> GadgetT a s m b -> GadgetT a s m a #

MonadIO m => MonadIO (GadgetT a s m) Source # 

Methods

liftIO :: IO a -> GadgetT a s m a #

MonadPlus m => Alternative (GadgetT a s m) Source # 

Methods

empty :: GadgetT a s m a #

(<|>) :: GadgetT a s m a -> GadgetT a s m a -> GadgetT a s m a #

some :: GadgetT a s m a -> GadgetT a s m [a] #

many :: GadgetT a s m a -> GadgetT a s m [a] #

MonadPlus m => MonadPlus (GadgetT a s m) Source # 

Methods

mzero :: GadgetT a s m a #

mplus :: GadgetT a s m a -> GadgetT a s m a -> GadgetT a s m a #

Monad m => Zoom (GadgetT a s m) (GadgetT a t m) s t Source # 

Methods

zoom :: LensLike' (Zoomed (GadgetT a s m) c) t s -> GadgetT a s m c -> GadgetT a t m c #

Monad m => Magnify (GadgetT a s m) (GadgetT b s m) a b Source # 

Methods

magnify :: LensLike' (Magnified (GadgetT a s m) c) b a -> GadgetT a s m c -> GadgetT b s m c #

(Monad m, Semigroup c) => Semigroup (GadgetT a s m c) Source # 

Methods

(<>) :: GadgetT a s m c -> GadgetT a s m c -> GadgetT a s m c #

sconcat :: NonEmpty (GadgetT a s m c) -> GadgetT a s m c #

stimes :: Integral b => b -> GadgetT a s m c -> GadgetT a s m c #

(Monad m, Monoid c) => Monoid (GadgetT a s m c) Source # 

Methods

mempty :: GadgetT a s m c #

mappend :: GadgetT a s m c -> GadgetT a s m c -> GadgetT a s m c #

mconcat :: [GadgetT a s m c] -> GadgetT a s m c #

Wrapped (GadgetT a0 s0 m0 c0) Source # 

Associated Types

type Unwrapped (GadgetT a0 s0 m0 c0) :: * #

Methods

_Wrapped' :: Iso' (GadgetT a0 s0 m0 c0) (Unwrapped (GadgetT a0 s0 m0 c0)) #

(~) * (GadgetT a0 s0 m0 c0) t0 => Rewrapped (GadgetT a1 s1 m1 c1) t0 Source # 
type Zoomed (GadgetT a s m) Source # 
type Zoomed (GadgetT a s m) = Zoomed (ReaderT * a (StateT s m))
type Magnified (GadgetT a s m) Source # 
type Magnified (GadgetT a s m) = Magnified (ReaderT * a (StateT s m))
type Unwrapped (GadgetT a0 s0 m0 c0) Source # 
type Unwrapped (GadgetT a0 s0 m0 c0) = ReaderT * a0 (StateT s0 m0) c0

type Gadget a s = GadgetT a s Identity Source #

_GadgetT :: Iso (GadgetT a s m c) (GadgetT a' s' m' c') (a -> s -> m (c, s)) (a' -> s' -> m' (c', s')) Source #

_GadgetT' :: Iso' (GadgetT a s m c) (a -> s -> m (c, s)) Source #

Non polymorphic version of _Gadget

mkGadgetT' :: (a -> s -> m (c, s)) -> GadgetT a s m c Source #

runGadgetT' :: GadgetT a s m c -> a -> s -> m (c, s) Source #

belowGadgetT :: ((a -> s -> m (c, s)) -> a' -> s' -> m' (c', s')) -> GadgetT a s m c -> GadgetT a' s' m' c' Source #

underGadgetT :: (ReaderT a (StateT s m) c -> ReaderT a' (StateT s' m') c') -> GadgetT a s m c -> GadgetT a' s' m' c' Source #

overGadgetT :: (GadgetT a s m c -> GadgetT a' s' m' c') -> ReaderT a (StateT s m) c -> ReaderT a' (StateT s' m') c' Source #

aboveGadgetT :: (GadgetT a s m c -> GadgetT a' s' m' c') -> (a -> s -> m (c, s)) -> a' -> s' -> m' (c', s') Source #