@@ -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
@@ -942,25 +945,29 @@ span p arr =
942
945
-- | Group equal, consecutive elements of an array into arrays.
943
946
-- |
944
947
-- | ```purescript
945
- -- | group [1,1,2,2, 1] == [NonEmpty 1 [ 1], NonEmpty 2 [ 2], NonEmpty 1 [ ]]
948
+ -- | group [1, 1, 2, 2, 1] == [NonEmptyArray [1, 1], NonEmptyArray [2, 2], NonEmptyArray [1 ]]
946
949
-- | ```
947
950
group :: forall a . Eq a => Array a -> Array (NonEmptyArray a )
948
951
group xs = groupBy eq xs
949
952
950
- -- | Sort and then group the elements of an array into arrays.
953
+ -- | Group equal elements of an array into arrays.
951
954
-- |
952
955
-- | ```purescript
953
- -- | group' [1,1,2,2, 1] == [NonEmpty 1 [1, 1],NonEmpty 2 [ 2]]
956
+ -- | groupAll [1, 1, 2, 2, 1] == [NonEmptyArray [1, 1, 1], NonEmptyArray [2, 2]]
954
957
-- | ```
955
- group' :: forall a . Ord a => Array a -> Array (NonEmptyArray a )
956
- group' = group <<< sort
958
+ groupAll :: forall a . Ord a => Array a -> Array (NonEmptyArray a )
959
+ groupAll = groupAllBy eq
960
+
961
+ -- | Deprecated previous name of `groupAll`.
962
+ group' :: forall a . Warn (Text " 'group\' ' is deprecated, use groupAll instead" ) => Ord a => Array a -> Array (NonEmptyArray a )
963
+ group' = groupAll
957
964
958
965
-- | Group equal, consecutive elements of an array into arrays, using the
959
- -- | specified equivalence relation to detemine equality.
966
+ -- | specified equivalence relation to determine equality.
960
967
-- |
961
968
-- | ```purescript
962
969
-- | groupBy (\a b -> odd a && odd b) [1, 3, 2, 4, 3, 3]
963
- -- | = [NonEmpty 1 [ 3], NonEmpty 2 [] , NonEmpty 4 [ ], NonEmpty 3 [ 3]]
970
+ -- | = [NonEmptyArray [1, 3], NonEmptyArray [2], NonEmptyArray [4 ], NonEmptyArray [3, 3]]
964
971
-- | ```
965
972
-- |
966
973
groupBy :: forall a . (a -> a -> Boolean ) -> Array a -> Array (NonEmptyArray a )
@@ -976,6 +983,17 @@ groupBy op xs =
976
983
STA .push (NonEmptyArray grp) result
977
984
STA .unsafeFreeze result
978
985
986
+ -- | Group equal elements of an array into arrays, using the specified
987
+ -- | equivalence relation to determine equality.
988
+ -- |
989
+ -- | ```purescript
990
+ -- | groupAllBy (\a b -> odd a && odd b) [1, 3, 2, 4, 3, 3]
991
+ -- | = [NonEmptyArray [1], NonEmptyArray [2], NonEmptyArray [3, 3, 3], NonEmptyArray [4]]
992
+ -- | ```
993
+ -- |
994
+ groupAllBy :: forall a . Ord a => (a -> a -> Boolean ) -> Array a -> Array (NonEmptyArray a )
995
+ groupAllBy p = groupBy p <<< sort
996
+
979
997
-- | Remove the duplicates from an array, creating a new array.
980
998
-- |
981
999
-- | ```purescript
0 commit comments