@@ -37,23 +37,23 @@ Since MonadHold depends on MonadSample, any [S] function also runs in [H] contex
3737[ ] traceEventWith :: (a -> String) -> Event a -> Event a
3838
3939-- Transform Event to Event by sampling Behavior or Dynamic
40−[ ] gate :: Behavior Bool -> Event a -> Event a
41−[ ] tag :: Behavior a -> Event b -> Event a
42−[ ] tagDyn :: Dynamic a -> Event b -> Event a
43−[ ] attach :: Behavior a -> Event b -> Event (a, b)
44−[ ] attachDyn :: Dynamic a -> Event b -> Event (a, b)
45−[ ] attachWith :: (a -> b -> c) -> Behavior a -> Event b -> Event c
46−[ ] attachDynWith :: (a -> b -> c) -> Dynamic a -> Event b -> Event c
47−[ ] attachWithMaybe :: (a -> b -> Maybe c) -> Behavior a -> Event b -> Event c
48−[ ] attachDynWithMaybe :: (a -> b -> Maybe c) -> Dynamic a -> Event b -> Event c
40+[ ] gate :: Behavior Bool -> Event a -> Event a
41+[ ] tag :: Behavior a -> Event b -> Event a
42+[ ] tagPromptlyDyn :: Dynamic a -> Event b -> Event a
43+[ ] attach :: Behavior a -> Event b -> Event (a, b)
44+[ ] attachPromptlyDyn :: Dynamic a -> Event b -> Event (a, b)
45+[ ] attachWith :: (a -> b -> c) -> Behavior a -> Event b -> Event c
46+[ ] attachPromptlyDynWith :: (a -> b -> c) -> Dynamic a -> Event b -> Event c
47+[ ] attachWithMaybe :: (a -> b -> Maybe c) -> Behavior a -> Event b -> Event c
48+[ ] attachPromptlyDynWithMaybe :: (a -> b -> Maybe c) -> Dynamic a -> Event b -> Event c
4949
5050-- Combine multiple Events
51−[ ] <> :: Monoid a => Event a -> Event a -> Event a
51+[ ] <> :: Monoid a => Event a -> Event a -> Event a
5252[ ] mergeWith :: (a -> a -> a) -> [Event a] -> Event a
53−[ ] leftmost :: [Event a] -> Event a
53+[ ] leftmost :: [Event a] -> Event a
5454[ ] mergeList :: [Event a] -> Event (NonEmpty a)
55−[ ] merge :: GCompare k => DMap (WrapArg Event k) -> Event (DMap k)
56−[ ] mergeMap :: Ord k => Map k (Event a) -> Event (Map k a)
55+[ ] merge :: GCompare k => DMap (WrapArg Event k) -> Event (DMap k)
56+[ ] mergeMap :: Ord k => Map k (Event a) -> Event (Map k a)
5757
5858-- Efficient one-to-many fanout
5959[ ] fanMap :: Ord k => Event (Map k a) -> EventSelector (Const2 k a)
@@ -84,11 +84,11 @@ Since MonadHold depends on MonadSample, any [S] function also runs in [H] contex
8484[H] hold :: a -> Event a -> m (Behavior a)
8585
8686-- Transform Behavior to Behavior using function
87−[ ] fmap :: (a -> b) -> Behavior a -> Behavior b
88−[ ] ffor :: Behavior a -> (a -> b) -> Behavior b
89−[ ] <*> :: Behavior (a -> b) -> Behavior a -> Behavior b
90−[ ] >>= :: Behavior a -> (a -> Behavior b) -> Behavior b
91−[ ] <> :: Monoid a => Behavior a -> Behavior a -> Behavior a
87+[ ] fmap :: (a -> b) -> Behavior a -> Behavior b
88+[ ] ffor :: Behavior a -> (a -> b) -> Behavior b
89+[ ] <*> :: Behavior (a -> b) -> Behavior a -> Behavior b
90+[ ] >>= :: Behavior a -> (a -> Behavior b) -> Behavior b
91+[ ] <> :: Monoid a => Behavior a -> Behavior a -> Behavior a
9292-- ... plus many more due to typeclass membership
9393
9494-- Behavior to Behavior by sampling current values
@@ -117,24 +117,21 @@ Since MonadHold depends on MonadSample, any [S] function also runs in [H] contex
117117[H] toggle :: Bool -> Event a -> m (Dynamic Bool)
118118
119119-- Transform Dynamic to Dynamic using function
120−[H] forDyn :: Dynamic a -> (a -> b) -> m (Dynamic b)
121−[H] mapDyn :: (a -> b) -> Dynamic a -> m (Dynamic b)
122−[H] mapDynM :: (a -> m' b) -> Dynamic a -> m (Dynamic b)
123− -- Note m' supplies [S] context
124−[H] splitDyn :: Dynamic (a, b) -> m (Dynamic a, Dynamic b)
120+[ ] ffor :: Dynamic a -> (a -> b) -> Dynamic b
121+[ ] fmap :: (a -> b) -> Dynamic a -> Dynamic b
122+[ ] splitDynPure :: Dynamic (a, b) -> (Dynamic a, Dynamic b)
125123
126124-- Combine multiple Dynamics
127−[H] mconcatDyn :: Monoid a => [Dynamic a] -> m (Dynamic a)
128−[H] distributeDMapOverDyn :: GCompare k => DMap (WrapArg Dynamic k) -> m (Dynamic (DMap k))
129−[H] combineDyn :: (a -> b -> c) -> Dynamic a -> Dynamic b -> m (Dynamic c)
130−[ ] zipDynWith :: (a -> b -> c) -> Dynamic a -> Dynamic b -> Dynamic c
125+[ ] mconcat :: Monoid a => [Dynamic a] -> Dynamic a
126+[ ] distributeDMapOverDynPure :: GCompare k => DMap (WrapArg Dynamic k) -> Dynamic (DMap k)
127+[ ] zipDynWith :: (a -> b -> c) -> Dynamic a -> Dynamic b -> Dynamic c
131128
132129-- Efficient one-to-many fanout
133−[ ] demux :: Ord k => Dynamic k -> Demux k
134−[H] getDemuxed :: Eq k => Demux k -> k -> m (Dynamic Bool)
130+[ ] demux :: Ord k => Dynamic k -> Demux k
131+[ ] demuxed :: Eq k => Demux k -> k -> Dynamic Bool
135132
136133-- Dynamic to Dynamic, removing updates w/o value change
137−[ ] nubDyn :: Eq a => Dynamic a -> Dynamic a
134+[ ] uniqDyn :: Eq a => Dynamic a -> Dynamic a
138135
139136-- Dynamic to identical Dynamic with debug trace. (Only prints if Dynamic is ultimately used.)
140137[ ] traceDyn :: Show a => String -> Dynamic a -> Dynamic a
@@ -166,7 +163,7 @@ For Events, the returned Event fires whenever the latest Event supplied by the w
166163
167164-- Flatten Dynamic-of-Dynamic to Dynamic. New Dynamic is used immediately.
168165-- Output updated whenever inner OR outer Dynamic updates.
169−[ ] joinDyn :: Dynamic (Dynamic a) -> Dynamic a
166+[ ] join :: Dynamic (Dynamic a) -> Dynamic a
170167[ ] joinDynThroughMap :: Ord k => Dynamic (Map k (Dynamic a)) -> Dynamic (Map k a)
171168
172169-- Analogous to 'hold': Create a Behavior that is initially identical to the