Skip to content

Commit 1d80a6f

Browse files
committed
export list and additional fns
1 parent 6cf5b21 commit 1d80a6f

File tree

1 file changed

+111
-10
lines changed

1 file changed

+111
-10
lines changed

src/Data/Array/NonEmpty.purs

Lines changed: 111 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,98 @@
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

397
import Prelude
498

@@ -99,6 +193,7 @@ fromArray xs
99193
| A.length xs > 0 = Just (NonEmptyArray xs)
100194
| otherwise = Nothing
101195

196+
-- | INTERNAL
102197
unsafeFromArray :: forall a. Array a -> NonEmptyArray a
103198
unsafeFromArray = NonEmptyArray
104199

@@ -111,12 +206,12 @@ toArray (NonEmptyArray xs) = xs
111206
toNonEmpty :: forall a. NonEmptyArray a -> NonEmpty Array a
112207
toNonEmpty = 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-
117209
fromFoldable :: forall f a. Foldable f => f a -> Maybe (NonEmptyArray a)
118210
fromFoldable = fromArray <<< A.fromFoldable
119211

212+
toUnfoldable :: forall f a. Unfoldable f => NonEmptyArray a -> f a
213+
toUnfoldable = adaptAny A.toUnfoldable
214+
120215
singleton :: forall a. a -> NonEmptyArray a
121216
singleton = NonEmptyArray <<< A.singleton
122217

@@ -148,6 +243,12 @@ infixr 6 cons as :
148243
cons' :: forall a. a -> Array a -> NonEmptyArray a
149244
cons' 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+
151252
appendArray :: forall a. NonEmptyArray a -> Array a -> NonEmptyArray a
152253
appendArray xs ys = unsafeFromArray $ toArray xs <> ys
153254

@@ -201,9 +302,15 @@ deleteAt = adaptAny' A.deleteAt
201302
updateAt :: forall a. Int -> a -> NonEmptyArray a -> Maybe (NonEmptyArray a)
202303
updateAt 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+
204308
modifyAt :: forall a. Int -> (a -> a) -> NonEmptyArray a -> Maybe (NonEmptyArray a)
205309
modifyAt 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+
207314
alterAt :: forall a. Int -> (a -> Maybe a) -> NonEmptyArray a -> Maybe (Array a)
208315
alterAt i f = A.alterAt i f <<< toArray
209316

@@ -240,12 +347,6 @@ mapMaybe = adaptAny' A.mapMaybe
240347
catMaybes :: forall a. NonEmptyArray (Maybe a) -> Array a
241348
catMaybes = 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-
249350
sort :: forall a. Ord a => NonEmptyArray a -> NonEmptyArray a
250351
sort = unsafeAdapt A.sort
251352

0 commit comments

Comments
 (0)