File tree Expand file tree Collapse file tree 2 files changed +34
-0
lines changed Expand file tree Collapse file tree 2 files changed +34
-0
lines changed Original file line number Diff line number Diff line change 43
43
44
44
findLastIndex :: forall a. (a -> Prim.Boolean) -> [a] -> Prim.Number
45
45
46
+ group :: forall a. (Eq a) => [a] -> [[a]]
47
+
48
+ group' :: forall a. (Ord a) => [a] -> [[a]]
49
+
50
+ groupBy :: forall a. (a -> a -> Prim.Boolean) -> [a] -> [[a]]
51
+
46
52
head :: forall a. [a] -> Maybe a
47
53
48
54
init :: forall a. [a] -> Maybe [a]
75
81
76
82
sortBy :: forall a. (a -> a -> Ordering) -> [a] -> [a]
77
83
84
+ span :: forall a. (a -> Prim.Boolean) -> [a] -> { rest :: [a], init :: [a] }
85
+
78
86
tail :: forall a. [a] -> Maybe [a]
79
87
80
88
take :: forall a. Prim.Number -> [a] -> [a]
Original file line number Diff line number Diff line change @@ -30,6 +30,10 @@ module Data.Array
30
30
, nubBy
31
31
, sort
32
32
, sortBy
33
+ , group
34
+ , group'
35
+ , groupBy
36
+ , span
33
37
) where
34
38
35
39
import Data.Maybe
@@ -283,6 +287,28 @@ foreign import sortJS
283
287
\ };\
284
288
\}" :: forall a . (a -> a -> Number ) -> [a ] -> [a ]
285
289
290
+ group :: forall a . (Eq a ) => [a ] -> [[a ]]
291
+ group xs = groupBy (==) xs
292
+
293
+ -- | Performs a sorting first.
294
+ group' :: forall a . (Ord a ) => [a ] -> [[a ]]
295
+ group' = group <<< sort
296
+
297
+ groupBy :: forall a . (a -> a -> Boolean ) -> [a ] -> [[a ]]
298
+ groupBy = go []
299
+ where
300
+ go :: forall a . [[a ]] -> (a -> a -> Boolean ) -> [a ] -> [[a ]]
301
+ go acc _ [] = reverse acc
302
+ go acc op (x:xs) = let sp = span (op x) xs in
303
+ go ((x:sp.init):acc) op sp.rest
304
+
305
+ span :: forall a . (a -> Boolean ) -> [a ] -> { init :: [a ], rest :: [a ] }
306
+ span = go []
307
+ where
308
+ go :: forall a . [a ] -> (a -> Boolean ) -> [a ] -> { init :: [a ], rest :: [a ] }
309
+ go acc p (x:xs) | p x = go (x:acc) p xs
310
+ go acc _ xs = { init: reverse acc, rest: xs }
311
+
286
312
instance functorArray :: Functor [] where
287
313
(<$>) = map
288
314
You can’t perform that action at this time.
0 commit comments