on develop help sign in
Update Quickref.md
1f8e1cbLennart Spitzner
Quickref.md+12−5
@@ -48,7 +48,10 @@ Since MonadHold depends on MonadSample, any [S] function also runs in [H] contex
48[ ] attachPromptlyDynWithMaybe :: (a -> b -> Maybe c) -> Dynamic a -> Event b -> Event c
48[ ] attachPromptlyDynWithMaybe :: (a -> b -> Maybe c) -> Dynamic a -> Event b -> Event c
49
49
50-- Combine multiple Events
50-- Combine multiple Events
51−[ ] <> :: Monoid a => Event a -> Event a -> Event a
51+[ ] <> :: Monoid a => Event a -> Event a -> Event a
52+[ ] unlessE :: Event a -> Event b -> Event a
53+[ ] align :: Event a -> Event b -> Event (These a b)
54+[ ] alignWith :: (These a b -> c) -> Event a -> Event b -> Event c
52[ ] mergeWith :: (a -> a -> a) -> [Event a] -> Event a
55[ ] mergeWith :: (a -> a -> a) -> [Event a] -> Event a
53[ ] leftmost :: [Event a] -> Event a
56[ ] leftmost :: [Event a] -> Event a
54[ ] mergeList :: [Event a] -> Event (NonEmpty a)
57[ ] mergeList :: [Event a] -> Event (NonEmpty a)
@@ -56,9 +59,11 @@ Since MonadHold depends on MonadSample, any [S] function also runs in [H] contex
56[ ] mergeMap :: Ord k => Map k (Event a) -> Event (Map k a)
59[ ] mergeMap :: Ord k => Map k (Event a) -> Event (Map k a)
57
60
58-- Efficient one-to-many fanout
61-- Efficient one-to-many fanout
59−[ ] fanMap :: Ord k => Event (Map k a) -> EventSelector (Const2 k a)
62+[ ] fanMap :: Ord k => Event (Map k a) -> EventSelector (Const2 k a)
60−[ ] fan :: GCompare k => Event (DMap k) -> EventSelector k
63+[ ] fan :: GCompare k => Event (DMap k) -> EventSelector k
61−[ ] select :: EventSelector k -> k a -> Event a
64+[ ] select :: EventSelector k -> k a -> Event a
65+[ ] fanEither :: Event (Either a b) -> (Event a, Event b)
66+[ ] fanThese :: Event (These a b) -> (Event a, Event b)
62
67
63-- Event to Event via function that can sample current values
68-- Event to Event via function that can sample current values
64[ ] push :: (a -> m (Maybe b)) -> Event a -> Event b
69[ ] push :: (a -> m (Maybe b)) -> Event a -> Event b
@@ -124,7 +129,9 @@ Since MonadHold depends on MonadSample, any [S] function also runs in [H] contex
124-- Combine multiple Dynamics
129-- Combine multiple Dynamics
125[ ] mconcat :: Monoid a => [Dynamic a] -> Dynamic a
130[ ] mconcat :: Monoid a => [Dynamic a] -> Dynamic a
126[ ] distributeDMapOverDynPure :: GCompare k => DMap (WrapArg Dynamic k) -> Dynamic (DMap k)
131[ ] distributeDMapOverDynPure :: GCompare k => DMap (WrapArg Dynamic k) -> Dynamic (DMap k)
132+[ ] <*> :: Dynamic (a -> b) -> Dynamic a -> Dynamic b
133+[ ] >>= :: Dynamic a -> (a -> Dynamic b) -> Dynamic b
127−[ ] zipDynWith :: (a -> b -> c) -> Dynamic a -> Dynamic b -> Dynamic c
134+[ ] zipDynWith :: (a -> b -> c) -> Dynamic a -> Dynamic b -> Dynamic c
128
135
129-- Efficient one-to-many fanout
136-- Efficient one-to-many fanout
130[ ] demux :: Ord k => Dynamic k -> Demux k
137[ ] demux :: Ord k => Dynamic k -> Demux k
src/Reflex/Class.hs+1
@@ -661,6 +661,7 @@ zipDyn = zipDynWith (,)
661
661
662-- | Combine two 'Dynamic's with a combining function. The result will change
662-- | Combine two 'Dynamic's with a combining function. The result will change
663-- whenever either (or both) input 'Dynamic' changes.
663-- whenever either (or both) input 'Dynamic' changes.
664+-- More efficient than liftA2.
664zipDynWith :: Reflex t => (a -> b -> c) -> Dynamic t a -> Dynamic t b -> Dynamic t c
665zipDynWith :: Reflex t => (a -> b -> c) -> Dynamic t a -> Dynamic t b -> Dynamic t c
665zipDynWith f da db =
666zipDynWith f da db =
666 let eab = align (updated da) (updated db)
667 let eab = align (updated da) (updated db)