on develop help sign in
Merge pull request #45 from DiegoNolan/develop
57be32fRyan Trinkle
src/Reflex/Dynamic.hs+16
@@ -20,6 +20,7 @@ module Reflex.Dynamic ( Dynamic -- Abstract so we can preserve the law that the
20 , foldDynMaybe
20 , foldDynMaybe
21 , foldDynMaybeM
21 , foldDynMaybeM
22 , combineDyn
22 , combineDyn
23+ , apDyn
23 , collectDyn
24 , collectDyn
24 , mconcatDyn
25 , mconcatDyn
25 , distributeDMapOverDyn
26 , distributeDMapOverDyn
@@ -271,6 +272,21 @@ combineDyn f da db = do
271 let bc :: Behavior t c = pull $ sample =<< sample bbc
272 let bc :: Behavior t c = pull $ sample =<< sample bbc
272 return $ Dynamic bc ec
273 return $ Dynamic bc ec
273
274
275+-- | A psuedo applicative version of ap for 'Dynamic'. Example useage:
276+--
277+-- > do
278+-- > person <- Person `mapDyn` dynFirstName
279+-- > `apDyn` dynListName
280+-- > `apDyn` dynAge
281+-- > `apDyn` dynAddress
282+apDyn :: forall t m a b. (Reflex t, MonadHold t m)
283+ => m (Dynamic t (a -> b))
284+ -> Dynamic t a
285+ -> m (Dynamic t b)
286+apDyn m a = do
287+ r <- m
288+ combineDyn (\f c -> f c) r a
289+
274{-
290{-
275tagInnerDyn :: Reflex t => Event t (Dynamic t a) -> Event t a
291tagInnerDyn :: Reflex t => Event t (Dynamic t a) -> Event t a
276tagInnerDyn e =
292tagInnerDyn e =