@@ -94,8 +94,10 @@ module Data.Array
9494 , dropWhile
9595 , span
9696 , group
97+ , groupAll
9798 , group'
9899 , groupBy
100+ , groupAllBy
99101
100102 , nub
101103 , nubEq
@@ -140,6 +142,7 @@ import Data.Traversable (sequence, traverse)
140142import Data.Tuple (Tuple (..), fst , snd )
141143import Data.Unfoldable (class Unfoldable , unfoldr )
142144import Partial.Unsafe (unsafePartial )
145+ import Prim.TypeError (class Warn , Text )
143146
144147-- | Convert an `Array` into an `Unfoldable` structure.
145148toUnfoldable :: forall f . Unfoldable f => Array ~> f
@@ -942,25 +945,29 @@ span p arr =
942945-- | Group equal, consecutive elements of an array into arrays.
943946-- |
944947-- | ```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 ]]
946949-- | ```
947950group :: forall a . Eq a => Array a -> Array (NonEmptyArray a )
948951group xs = groupBy eq xs
949952
950- -- | Sort and then group the elements of an array into arrays.
953+ -- | Group equal elements of an array into arrays.
951954-- |
952955-- | ```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]]
954957-- | ```
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
957964
958965-- | 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.
960967-- |
961968-- | ```purescript
962969-- | 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]]
964971-- | ```
965972-- |
966973groupBy :: forall a . (a -> a -> Boolean ) -> Array a -> Array (NonEmptyArray a )
@@ -976,6 +983,17 @@ groupBy op xs =
976983 STA .push (NonEmptyArray grp) result
977984 STA .unsafeFreeze result
978985
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+
979997-- | Remove the duplicates from an array, creating a new array.
980998-- |
981999-- | ```purescript
0 commit comments