@@ -53,10 +53,12 @@ module Reflex.Dynamic
53 , foldDynMaybe
53 , foldDynMaybe
54 , foldDynMaybeM
54 , foldDynMaybeM
55 , joinDynThroughMap
55 , joinDynThroughMap
56+ , joinDynThroughIntMap
56 , traceDyn
57 , traceDyn
57 , traceDynWith
58 , traceDynWith
58 , splitDynPure
59 , splitDynPure
59 , distributeMapOverDynPure
60 , distributeMapOverDynPure
61+ , distributeIntMapOverDynPure
60 , distributeDMapOverDynPure
62 , distributeDMapOverDynPure
61 , distributeListOverDynPure
63 , distributeListOverDynPure
@@ -88,6 +90,8 @@ import Data.Dependent.Map (DMap)
88import qualified Data.Dependent.Map as DMap
90import qualified Data.Dependent.Map as DMap
89import Data.Dependent.Sum (DSum (..))
91import Data.Dependent.Sum (DSum (..))
90import Data.GADT.Compare (GCompare (..), GEq (..), GOrdering (..))
92import Data.GADT.Compare (GCompare (..), GEq (..), GOrdering (..))
93+import Data.IntMap (IntMap)
94+import qualified Data.IntMap as IntMap
91import Data.Map (Map)
95import Data.Map (Map)
92import Data.Maybe
96import Data.Maybe
93import Data.Monoid ((<>))
97import Data.Monoid ((<>))
@@ -202,6 +206,11 @@ splitDynPure d = (fmap fst d, fmap snd d)
202distributeMapOverDynPure :: (Reflex t, Ord k) => Map k (Dynamic t v) -> Dynamic t (Map k v)
206distributeMapOverDynPure :: (Reflex t, Ord k) => Map k (Dynamic t v) -> Dynamic t (Map k v)
203distributeMapOverDynPure = fmap dmapToMap . distributeDMapOverDynPure . mapWithFunctorToDMap
207distributeMapOverDynPure = fmap dmapToMap . distributeDMapOverDynPure . mapWithFunctorToDMap
209+-- | Convert an 'IntMap' with 'Dynamic' elements into a 'Dynamic' of an 'IntMap' with
210+-- non-'Dynamic' elements.
211+distributeIntMapOverDynPure :: (Reflex t) => IntMap (Dynamic t v) -> Dynamic t (IntMap v)
212+distributeIntMapOverDynPure = fmap dmapToIntMap . distributeDMapOverDynPure . intMapWithFunctorToDMap
205-- | Convert a list with 'Dynamic' elements into a 'Dynamic' of a list with
214-- | Convert a list with 'Dynamic' elements into a 'Dynamic' of a list with
206-- non-'Dynamic' elements, preserving the order of the elements.
215-- non-'Dynamic' elements, preserving the order of the elements.
207{-# DEPRECATED distributeListOverDynPure "Use 'distributeListOverDyn' instead" #-}
216{-# DEPRECATED distributeListOverDynPure "Use 'distributeListOverDyn' instead" #-}
@@ -214,6 +223,11 @@ distributeListOverDynPure = distributeListOverDyn
214joinDynThroughMap :: forall t k a. (Reflex t, Ord k) => Dynamic t (Map k (Dynamic t a)) -> Dynamic t (Map k a)
223joinDynThroughMap :: forall t k a. (Reflex t, Ord k) => Dynamic t (Map k (Dynamic t a)) -> Dynamic t (Map k a)
215joinDynThroughMap = (distributeMapOverDynPure =<<)
224joinDynThroughMap = (distributeMapOverDynPure =<<)
226+-- | Combine a 'Dynamic' of an 'IntMap' of 'Dynamic's into a 'Dynamic'
227+-- with the current values of the 'Dynamic's in a map.
228+joinDynThroughIntMap :: forall t a. (Reflex t) => Dynamic t (IntMap (Dynamic t a)) -> Dynamic t (IntMap a)
229+joinDynThroughIntMap = (distributeIntMapOverDynPure =<<)
217-- | Print the value of the 'Dynamic' when it is first read and on each
231-- | Print the value of the 'Dynamic' when it is first read and on each
218-- subsequent change that is observed (as 'traceEvent'), prefixed with the
232-- subsequent change that is observed (as 'traceEvent'), prefixed with the
219-- provided string. This should /only/ be used for debugging.
233-- provided string. This should /only/ be used for debugging.