@@ -94,8 +94,10 @@ module Data.Array
94
94
, dropWhile
95
95
, span
96
96
, group
97
+ , groupAll
97
98
, group'
98
99
, groupBy
100
+ , groupAllBy
99
101
100
102
, nub
101
103
, nubEq
@@ -140,6 +142,7 @@ import Data.Traversable (sequence, traverse)
140
142
import Data.Tuple (Tuple (..), fst , snd )
141
143
import Data.Unfoldable (class Unfoldable , unfoldr )
142
144
import Partial.Unsafe (unsafePartial )
145
+ import Prim.TypeError (class Warn , Text )
143
146
144
147
-- | Convert an `Array` into an `Unfoldable` structure.
145
148
toUnfoldable :: forall f . Unfoldable f => Array ~> f
@@ -944,25 +947,29 @@ span p arr =
944
947
-- | Group equal, consecutive elements of an array into arrays.
945
948
-- |
946
949
-- | ```purescript
947
- -- | group [1,1,2,2, 1] == [NonEmpty 1 [ 1], NonEmpty 2 [ 2], NonEmpty 1 [ ]]
950
+ -- | group [1, 1, 2, 2, 1] == [NonEmptyArray [1, 1], NonEmptyArray [2, 2], NonEmptyArray [1 ]]
948
951
-- | ```
949
952
group :: forall a . Eq a => Array a -> Array (NonEmptyArray a )
950
953
group xs = groupBy eq xs
951
954
952
- -- | Sort and then group the elements of an array into arrays.
955
+ -- | Group equal elements of an array into arrays.
953
956
-- |
954
957
-- | ```purescript
955
- -- | group' [1,1,2,2, 1] == [NonEmpty 1 [1, 1],NonEmpty 2 [ 2]]
958
+ -- | groupAll [1, 1, 2, 2, 1] == [NonEmptyArray [1, 1, 1], NonEmptyArray [2, 2]]
956
959
-- | ```
957
- group' :: forall a . Ord a => Array a -> Array (NonEmptyArray a )
958
- group' = group <<< sort
960
+ groupAll :: forall a . Ord a => Array a -> Array (NonEmptyArray a )
961
+ groupAll = groupAllBy eq
962
+
963
+ -- | Deprecated previous name of `groupAll`.
964
+ group' :: forall a . Warn (Text " 'group\' ' is deprecated, use groupAll instead" ) => Ord a => Array a -> Array (NonEmptyArray a )
965
+ group' = groupAll
959
966
960
967
-- | Group equal, consecutive elements of an array into arrays, using the
961
- -- | specified equivalence relation to detemine equality.
968
+ -- | specified equivalence relation to determine equality.
962
969
-- |
963
970
-- | ```purescript
964
971
-- | groupBy (\a b -> odd a && odd b) [1, 3, 2, 4, 3, 3]
965
- -- | = [NonEmpty 1 [ 3], NonEmpty 2 [] , NonEmpty 4 [ ], NonEmpty 3 [ 3]]
972
+ -- | = [NonEmptyArray [1, 3], NonEmptyArray [2], NonEmptyArray [4 ], NonEmptyArray [3, 3]]
966
973
-- | ```
967
974
-- |
968
975
groupBy :: forall a . (a -> a -> Boolean ) -> Array a -> Array (NonEmptyArray a )
@@ -978,6 +985,17 @@ groupBy op xs =
978
985
STA .push (NonEmptyArray grp) result
979
986
STA .unsafeFreeze result
980
987
988
+ -- | Group equal elements of an array into arrays, using the specified
989
+ -- | equivalence relation to determine equality.
990
+ -- |
991
+ -- | ```purescript
992
+ -- | groupAllBy (\a b -> odd a && odd b) [1, 3, 2, 4, 3, 3]
993
+ -- | = [NonEmptyArray [1], NonEmptyArray [2], NonEmptyArray [3, 3, 3], NonEmptyArray [4]]
994
+ -- | ```
995
+ -- |
996
+ groupAllBy :: forall a . Ord a => (a -> a -> Boolean ) -> Array a -> Array (NonEmptyArray a )
997
+ groupAllBy p = groupBy p <<< sort
998
+
981
999
-- | Remove the duplicates from an array, creating a new array.
982
1000
-- |
983
1001
-- | ```purescript
0 commit comments