This repository was archived by the owner on Oct 4, 2020. It is now read-only.
File tree 3 files changed +13
-2
lines changed 3 files changed +13
-2
lines changed Original file line number Diff line number Diff line change 48
48
49
49
singleton :: forall k v. k -> v -> Map k v
50
50
51
+ size :: forall k v. Map k v -> Number
52
+
51
53
toList :: forall k v. Map k v -> [Tuple k v]
52
54
53
55
union :: forall k v. (P.Ord k) => Map k v -> Map k v -> Map k v
Original file line number Diff line number Diff line change @@ -23,7 +23,8 @@ module Data.Map
23
23
values ,
24
24
union ,
25
25
unions ,
26
- map
26
+ map ,
27
+ size
27
28
) where
28
29
29
30
import qualified Prelude as P
@@ -237,3 +238,6 @@ unions = foldl union empty
237
238
238
239
map :: forall k a b . (a -> b ) -> Map k a -> Map k b
239
240
map = P .(<$>)
241
+
242
+ size :: forall k v . Map k v -> Number
243
+ size = A .length P .<<< values
Original file line number Diff line number Diff line change @@ -4,7 +4,7 @@ import Debug.Trace
4
4
5
5
import Data.Maybe
6
6
import Data.Tuple
7
- import Data.Array (map )
7
+ import Data.Array (map , length , nubBy )
8
8
import Data.Function (on )
9
9
import Data.Foldable (foldl )
10
10
@@ -165,3 +165,8 @@ mapTests = do
165
165
166
166
trace " Union is idempotent"
167
167
quickCheck $ \m1 m2 -> (m1 `M.union` m2) == ((m1 `M.union` m2) `M.union` (m2 :: M.Map SmallKey Number ))
168
+
169
+ trace " size"
170
+ quickCheck $ \xs ->
171
+ let xs' = nubBy ((==) `on` fst) xs
172
+ in M .size (M .fromList xs') == length (xs' :: [Tuple SmallKey Number ])
You can’t perform that action at this time.
0 commit comments