@@ -15,8 +15,8 @@ import Data.List.NonEmpty as NEL
1515import Data.Maybe (Maybe (..))
1616import Data.NonEmpty ((:|))
1717import Data.StrMap as M
18- import Data.Tuple (Tuple (..), fst , uncurry )
19- import Data.Traversable (traverse , sequence )
18+ import Data.Tuple (Tuple (..), fst )
19+ import Data.Traversable (sequence )
2020
2121import Partial.Unsafe (unsafePartial )
2222
@@ -60,11 +60,6 @@ runInstructions instrs t0 = foldl step t0 instrs
6060number :: Int -> Int
6161number n = n
6262
63- oldTraverse :: forall a b m . Applicative m => (a -> m b ) -> M.StrMap a -> m (M.StrMap b )
64- oldTraverse f ms = A .foldr (\x acc -> M .union <$> x <*> acc) (pure M .empty) ((map (uncurry M .singleton)) <$> (traverse f <$> (M .toUnfoldable ms :: Array (Tuple String a ))))
65- oldSequence :: forall a m . Applicative m => M.StrMap (m a ) -> m (M.StrMap a )
66- oldSequence = oldTraverse id
67-
6863toAscArray :: forall a . M.StrMap a -> Array (Tuple String a )
6964toAscArray = M .toAscUnfoldable
7065
@@ -181,10 +176,18 @@ strMapTests = do
181176 resultViaLists = m # M .toUnfoldable # map (\(Tuple k v) → Tuple k (f k v)) # (M .fromFoldable :: forall a . L.List (Tuple String a ) -> M.StrMap a )
182177 in resultViaMapWithKey === resultViaLists
183178
184- log " sequence gives the same results as an old version (up to ordering )"
179+ log " sequence works (for m = Array )"
185180 quickCheck \(TestStrMap mOfSmallArrays :: TestStrMap (SmallArray Int )) ->
186- let m = (\(SmallArray a) -> a) <$> mOfSmallArrays
187- in A .sort (toAscArray <$> oldSequence m) === A .sort (toAscArray <$> sequence m)
181+ let m = (\(SmallArray a) -> a) <$> mOfSmallArrays
182+ Tuple keys values = A .unzip (toAscArray m)
183+ resultViaArrays = (M .fromFoldable <<< A .zip keys) <$> sequence values
184+ in A .sort (sequence m) === A .sort (resultViaArrays)
185+
186+ log " sequence works (for m = Maybe)"
187+ quickCheck \(TestStrMap m :: TestStrMap (Maybe Int )) ->
188+ let Tuple keys values = A .unzip (toAscArray m)
189+ resultViaArrays = (M .fromFoldable <<< A .zip keys) <$> sequence values
190+ in sequence m === resultViaArrays
188191
189192 log " Bug #63: accidental observable mutation in foldMap"
190193 quickCheck \(TestStrMap m) ->
0 commit comments