glazier-0.11.0.1: Composable widgets framework with enhanced with transformers and lens.

Safe HaskellNone
LanguageHaskell2010

Glazier.Gadget

Synopsis

Documentation

newtype GadgetT a s m c #

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

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 #

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

Methods

get :: GadgetT a s m s #

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

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

MFunctor * (GadgetT a s) # 

Methods

hoist :: Monad m => (forall b. m b -> n b) -> t m b -> t n b #

MonadTrans (GadgetT a s) # 

Methods

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

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

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

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

Methods

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

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

Methods

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

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

Methods

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

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

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

(*>) :: 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) # 

Methods

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

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

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

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 # 

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 # 

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

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

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 a s m c) # 

Associated Types

type Unwrapped (GadgetT a s m c) :: * #

Methods

_Wrapped' :: Iso' (GadgetT a s m c) (Unwrapped (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 Zoomed (GadgetT a s m) = Zoomed (ReaderT * a (StateT s m))
type Magnified (GadgetT a s m) # 
type Magnified (GadgetT a s m) = Magnified (ReaderT * a (StateT s m))
type Unwrapped (GadgetT a s m c) # 
type Unwrapped (GadgetT a s m c) = 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)) #

Non polymorphic version of _Gadget

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