Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data Widget s v m a c = Widget {
- widgetWindow :: Window m s v
- widgetGadget :: Gadget s m a c
- _Widget :: Iso (Widget s v m a c) (Widget s' v' m' a' c') (s -> m v, a -> s -> m (c, s)) (s' -> m' v', a' -> s' -> m' (c', s'))
- _Widget' :: Iso' (Widget s v m a c) (s -> m v, a -> s -> m (c, s))
- _WrappingWidget :: Iso (Widget s v m a c) (Widget s' v' m' a' c') (Window m s v, Gadget s m a c) (Window m' s' v', Gadget s' m' a' c')
- _WrappingWidget' :: Iso' (Widget s v m a c) (Window m s v, Gadget s m a c)
- hoistWidget :: Monad m => (forall x. m x -> n x) -> Widget s v m a c -> Widget s v n a c
- statically :: (Monad m, Monoid c) => Window m s v -> Widget s v m a c
- dynamically :: (Monad m, Monoid v) => Gadget s m a c -> Widget s v m a c
Documentation
data Widget s v m a c Source #
A widget is basically a tuple with Gadget and Window.
Widget | |
|
(Monad m, Monoid v) => Category * (Widget s v m) Source # | |
(Monad m, Monoid v) => Arrow (Widget s v m) Source # | No monad instance for Widget is possible, however an arrow is possible. The Arrow instance monoidally appends the Window, and uses the inner Gadget Arrow instance. |
(Monad m, Monoid v) => ArrowChoice (Widget s v m) Source # | |
Monad m => Profunctor (Widget s v m) Source # | |
Monad m => Choice (Widget s v m) Source # | |
Monad m => Strong (Widget s v m) Source # | |
Functor m => Functor (Widget s v m a) Source # | Widget Functor is lawful 1: fmap id = id (Widget w g) = Widget w (id $ g) = Widget w g 2: fmap (f . g) = fmap f . fmap g (Widget w gad) = Widget w ((f . g) $ gad) = Widget w ((fmap f . fmap g) gad) |
(Semigroup v, Monad m, Monoid v) => Applicative (Widget s v m a) Source # | Widget Applicative is lawful Identity: pure id * v = v Widget mempty (pure id) * Widget vw vg = Widget (mempty <> vw) (pure id * vg) = Widget vw vg Composition: pure (.) * u * v * w = u * (v * w) Widget mempty (pure (.)) * Widget uw ug * Widget vw vg * Widget ww wg = = Widget (mempty <> uw <> vw <> ww) (pure (.) * ug * vg * wg = Widget (uw <> vw <> ww) (ug * (vg * wg)) = Widget (uw <> (vw <> ww)) (ug * (vg * wg)) = Widget uw ug * (Widget vw vg * Widget ww wg) Interchange: u * pure y = pure ($ y) * u Widget uw ug * Widget mempty (pure y) = Widget (uw <> mempty) (ug * pure y) = Widget (mempty <> uw) (pure ($ y) * ug) = Widget mempty (pure $y) * Widget uw ug |
(Monad m, Semigroup c, Semigroup v) => Semigroup (Widget s v m a c) Source # | |
(Monad m, Monoid c, Monoid v) => Monoid (Widget s v m a c) Source # | |
HasWindow (Widget s0 v0 m0 a0 c0) (Window m0 s0 v0) Source # | |
HasGadget (Widget s0 v0 m0 a0 c0) (Gadget s0 m0 a0 c0) Source # | |
Monad m => Dispatch (Widget s v m a c) (Widget s v m b c) a b Source # | |
Monad m => Implant (Widget s v m a c) (Widget t v m a c) s t Source # | |
type Dispatched (Widget s v m a c) Source # | |
type Implanted (Widget s v m a c) Source # | |
_Widget :: Iso (Widget s v m a c) (Widget s' v' m' a' c') (s -> m v, a -> s -> m (c, s)) (s' -> m' v', a' -> s' -> m' (c', s')) Source #
This Iso gives the following functions:
belowWidget :: ((s -> m v, a -> s -> m (c, s)) -> (s' -> m' v', a' -> s' -> m' (c', s'))) -> Widget s v m a c -> Widget s' v' m' a' c' belowWidget f = _Widget %~ f aboveWidget :: (Widget s v m a c -> Widget s' v' m' a' c') -> (s -> m v, a -> s -> m (c, s)) -> (s' -> m' v', a' -> s' -> m' (c', s')) aboveWidget f = from _Widget %~ f mkWidget' :: (s -> m v, a -> s -> m (c, s)) -> Widget s v m a c mkWidget' = review _Widget runWidget' :: Widget s v m a c -> (s -> m v, a -> s -> m (c, s)) runWidget' = view _Widget
_Widget' :: Iso' (Widget s v m a c) (s -> m v, a -> s -> m (c, s)) Source #
Non polymorphic version of _Widget
_WrappingWidget :: Iso (Widget s v m a c) (Widget s' v' m' a' c') (Window m s v, Gadget s m a c) (Window m' s' v', Gadget s' m' a' c') Source #
This Iso gives the following functions:
underWidget :: ((Window m s v, Gadget s m a c) -> (Window m' s' v', Gadget s' m' a' c')) -> Widget s v m a c -> Widget s' v' m' a' c' underWidget f = _WrappingWidget %~ f overWidget :: (Widget s v m a c -> Widget s' v' m' a' c') -> (Window m s v, Gadget s m a c) -> (Window m' s' v', Gadget s' m' a' c') overWidget f = from _WrappingWidget %~ f mkWidget :: (Window m s v, Gadget s m a c) -> Widget s v m a c mkWidget = review _WrappingWidget runWidget :: Widget s v m a c -> (Window m s v, Gadget s m a c) runWidget = view _WrappingWidget
_WrappingWidget' :: Iso' (Widget s v m a c) (Window m s v, Gadget s m a c) Source #
Non polymorphic version of _WrappingWidget