@@ -15,8 +15,8 @@ import Data.List.NonEmpty as NEL
15
15
import Data.Maybe (Maybe (..))
16
16
import Data.NonEmpty ((:|))
17
17
import 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 )
20
20
21
21
import Partial.Unsafe (unsafePartial )
22
22
@@ -60,11 +60,6 @@ runInstructions instrs t0 = foldl step t0 instrs
60
60
number :: Int -> Int
61
61
number n = n
62
62
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
-
68
63
toAscArray :: forall a . M.StrMap a -> Array (Tuple String a )
69
64
toAscArray = M .toAscUnfoldable
70
65
@@ -181,10 +176,18 @@ strMapTests = do
181
176
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 )
182
177
in resultViaMapWithKey === resultViaLists
183
178
184
- log " sequence gives the same results as an old version (up to ordering )"
179
+ log " sequence works (for m = Array )"
185
180
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
188
191
189
192
log " Bug #63: accidental observable mutation in foldMap"
190
193
quickCheck \(TestStrMap m) ->
0 commit comments