1- module Data.Array.NonEmpty where
1+ module Data.Array.NonEmpty
2+ ( NonEmptyArray
3+ , fromArray
4+ , fromNonEmpty
5+ , toArray
6+ , toNonEmpty
7+
8+ , fromFoldable
9+ , toUnfoldable
10+ , singleton
11+ , (..), range
12+ , replicate
13+ , some
14+ -- TODO
15+ -- , many
16+
17+ , length
18+
19+ , (:), cons
20+ , cons'
21+ , snoc
22+ , snoc'
23+ , appendArray
24+ , insert
25+ , insertBy
26+
27+ , head
28+ , last
29+ , tail
30+ , init
31+ , uncons
32+ , unsnoc
33+
34+ , (!!), index
35+ , elemIndex
36+ , elemLastIndex
37+ , findIndex
38+ , findLastIndex
39+ , insertAt
40+ , deleteAt
41+ , updateAt
42+ , updateAtIndices
43+ , modifyAt
44+ , modifyAtIndices
45+ , alterAt
46+
47+ , reverse
48+ , concat
49+ , concatMap
50+ , filter
51+ , partition
52+ , filterA
53+ , mapMaybe
54+ , catMaybes
55+
56+ , sort
57+ , sortBy
58+ , sortWith
59+ , slice
60+ , take
61+ , takeEnd
62+ , takeWhile
63+ , drop
64+ , dropEnd
65+ , dropWhile
66+ , span
67+
68+ -- TODO
69+ -- , group
70+ -- , group'
71+ -- , groupBy
72+
73+ , nub
74+ , nubBy
75+ -- , union
76+ -- , unionBy
77+ , delete
78+ , deleteBy
79+
80+ -- , (\\), difference
81+ -- , intersect
82+ -- , intersectBy
83+
84+ , zipWith
85+ , zipWithA
86+ , zip
87+ , unzip
88+
89+ , foldM
90+ , foldRecM
91+
92+ , unsafeIndex
93+
94+ -- , module Exports
95+ ) where
296
397import Prelude
498
@@ -99,6 +193,7 @@ fromArray xs
99193 | A .length xs > 0 = Just (NonEmptyArray xs)
100194 | otherwise = Nothing
101195
196+ -- | INTERNAL
102197unsafeFromArray :: forall a . Array a -> NonEmptyArray a
103198unsafeFromArray = NonEmptyArray
104199
@@ -111,12 +206,12 @@ toArray (NonEmptyArray xs) = xs
111206toNonEmpty :: forall a . NonEmptyArray a -> NonEmpty Array a
112207toNonEmpty = uncons >>> \{head: x, tail: xs} -> x :| xs
113208
114- toUnfoldable :: forall f a . Unfoldable f => NonEmptyArray a -> f a
115- toUnfoldable = adaptAny A .toUnfoldable
116-
117209fromFoldable :: forall f a . Foldable f => f a -> Maybe (NonEmptyArray a )
118210fromFoldable = fromArray <<< A .fromFoldable
119211
212+ toUnfoldable :: forall f a . Unfoldable f => NonEmptyArray a -> f a
213+ toUnfoldable = adaptAny A .toUnfoldable
214+
120215singleton :: forall a . a -> NonEmptyArray a
121216singleton = NonEmptyArray <<< A .singleton
122217
@@ -148,6 +243,12 @@ infixr 6 cons as :
148243cons' :: forall a . a -> Array a -> NonEmptyArray a
149244cons' x xs = unsafeFromArray $ A .cons x xs
150245
246+ snoc :: forall a . NonEmptyArray a -> a -> NonEmptyArray a
247+ snoc xs x = unsafeFromArray $ A .snoc (toArray xs) x
248+
249+ snoc' :: forall a . Array a -> a -> NonEmptyArray a
250+ snoc' xs x = unsafeFromArray $ A .snoc xs x
251+
151252appendArray :: forall a . NonEmptyArray a -> Array a -> NonEmptyArray a
152253appendArray xs ys = unsafeFromArray $ toArray xs <> ys
153254
@@ -201,9 +302,15 @@ deleteAt = adaptAny' A.deleteAt
201302updateAt :: forall a . Int -> a -> NonEmptyArray a -> Maybe (NonEmptyArray a )
202303updateAt i x = map NonEmptyArray <<< A .updateAt i x <<< toArray
203304
305+ updateAtIndices :: forall t a . Foldable t => t (Tuple Int a ) -> NonEmptyArray a -> NonEmptyArray a
306+ updateAtIndices = unsafeAdapt' A .updateAtIndices
307+
204308modifyAt :: forall a . Int -> (a -> a ) -> NonEmptyArray a -> Maybe (NonEmptyArray a )
205309modifyAt i f = map NonEmptyArray <<< A .modifyAt i f <<< toArray
206310
311+ modifyAtIndices :: forall t a . Foldable t => t Int -> (a -> a ) -> NonEmptyArray a -> NonEmptyArray a
312+ modifyAtIndices = unsafeAdapt'' A .modifyAtIndices
313+
207314alterAt :: forall a . Int -> (a -> Maybe a ) -> NonEmptyArray a -> Maybe (Array a )
208315alterAt i f = A .alterAt i f <<< toArray
209316
@@ -240,12 +347,6 @@ mapMaybe = adaptAny' A.mapMaybe
240347catMaybes :: forall a . NonEmptyArray (Maybe a ) -> Array a
241348catMaybes = adaptAny A .catMaybes
242349
243- updateAtIndices :: forall t a . Foldable t => t (Tuple Int a ) -> NonEmptyArray a -> NonEmptyArray a
244- updateAtIndices = unsafeAdapt' A .updateAtIndices
245-
246- modifyAtIndices :: forall t a . Foldable t => t Int -> (a -> a ) -> NonEmptyArray a -> NonEmptyArray a
247- modifyAtIndices = unsafeAdapt'' A .modifyAtIndices
248-
249350sort :: forall a . Ord a => NonEmptyArray a -> NonEmptyArray a
250351sort = unsafeAdapt A .sort
251352
0 commit comments