@@ -32,7 +32,6 @@ derive newtype instance eq1NonEmptyArray :: Eq1 NonEmptyArray
3232derive newtype instance ordNonEmptyArray :: Ord a => Ord (NonEmptyArray a )
3333derive newtype instance ord1NonEmptyArray :: Ord1 NonEmptyArray
3434
35-
3635derive newtype instance functorNonEmptyArray :: Functor NonEmptyArray
3736derive newtype instance functorWithIndexNonEmptyArray :: FunctorWithIndex Int NonEmptyArray
3837
@@ -53,19 +52,31 @@ derive newtype instance monadNonEmptyArray :: Monad NonEmptyArray
5352derive newtype instance altNonEmptyArray :: Alt NonEmptyArray
5453
5554-- | Internal - adapt an Array transform to NonEmptyArray
56- adapt :: forall a b . (Array a -> Array b ) -> NonEmptyArray a -> NonEmptyArray b
57- adapt f = NonEmptyArray <<< adaptAny f
55+ --
56+ -- Note that this is unsafe: if the transform returns an empty array, this can
57+ -- explode at runtime.
58+ unsafeAdapt :: forall a b . (Array a -> Array b ) -> NonEmptyArray a -> NonEmptyArray b
59+ unsafeAdapt f = NonEmptyArray <<< adaptAny f
5860
5961-- | Internal - adapt an Array transform with argument to NonEmptyArray
60- adapt' :: forall a b c . (a -> Array b -> Array c ) -> a -> NonEmptyArray b -> NonEmptyArray c
61- adapt' f = adapt <<< f
62+ --
63+ -- Note that this is unsafe: if the transform returns an empty array, this can
64+ -- explode at runtime.
65+ unsafeAdapt' :: forall a b c . (a -> Array b -> Array c ) -> a -> NonEmptyArray b -> NonEmptyArray c
66+ unsafeAdapt' f = unsafeAdapt <<< f
6267
6368-- | Internal - adapt an Array transform with two arguments to NonEmptyArray
64- adapt'' :: forall a b c d . (a -> b -> Array c -> Array d ) -> a -> b -> NonEmptyArray c -> NonEmptyArray d
65- adapt'' f = adapt' <<< f
69+ --
70+ -- Note that this is unsafe: if the transform returns an empty array, this can
71+ -- explode at runtime.
72+ unsafeAdapt'' :: forall a b c d . (a -> b -> Array c -> Array d ) -> a -> b -> NonEmptyArray c -> NonEmptyArray d
73+ unsafeAdapt'' f = unsafeAdapt' <<< f
6674
6775-- | Internal - adapt an Array transform to NonEmptyArray,
6876-- with polymorphic result.
77+ --
78+ -- Note that this is unsafe: if the transform returns an empty array, this can
79+ -- explode at runtime.
6980adaptAny :: forall a b . (Array a -> b ) -> NonEmptyArray a -> b
7081adaptAny f = f <<< toArray
7182
@@ -130,7 +141,7 @@ length :: forall a. NonEmptyArray a -> Int
130141length = adaptAny A .length
131142
132143cons :: forall a . a -> NonEmptyArray a -> NonEmptyArray a
133- cons = adapt ' A .cons
144+ cons = unsafeAdapt ' A .cons
134145
135146infixr 6 cons as :
136147
@@ -141,10 +152,10 @@ appendArray :: forall a. NonEmptyArray a -> Array a -> NonEmptyArray a
141152appendArray xs ys = unsafeFromArray $ toArray xs <> ys
142153
143154insert :: forall a . Ord a => a -> NonEmptyArray a -> NonEmptyArray a
144- insert = adapt ' A .insert
155+ insert = unsafeAdapt ' A .insert
145156
146157insertBy :: forall a . (a -> a -> Ordering ) -> a -> NonEmptyArray a -> NonEmptyArray a
147- insertBy = adapt '' A .insertBy
158+ insertBy = unsafeAdapt '' A .insertBy
148159
149160head :: forall a . NonEmptyArray a -> a
150161head = adaptMaybe A .head
@@ -197,7 +208,7 @@ alterAt :: forall a. Int -> (a -> Maybe a) -> NonEmptyArray a -> Maybe (Array a)
197208alterAt i f = A .alterAt i f <<< toArray
198209
199210reverse :: forall a . NonEmptyArray a -> NonEmptyArray a
200- reverse = adapt A .reverse
211+ reverse = unsafeAdapt A .reverse
201212
202213concat :: forall a . NonEmptyArray (NonEmptyArray a ) -> NonEmptyArray a
203214concat = NonEmptyArray <<< A .concat <<< toArray <<< map toArray
@@ -230,19 +241,19 @@ catMaybes :: forall a. NonEmptyArray (Maybe a) -> Array a
230241catMaybes = adaptAny A .catMaybes
231242
232243updateAtIndices :: forall t a . Foldable t => t (Tuple Int a ) -> NonEmptyArray a -> NonEmptyArray a
233- updateAtIndices = adapt ' A .updateAtIndices
244+ updateAtIndices = unsafeAdapt ' A .updateAtIndices
234245
235246modifyAtIndices :: forall t a . Foldable t => t Int -> (a -> a ) -> NonEmptyArray a -> NonEmptyArray a
236- modifyAtIndices = adapt '' A .modifyAtIndices
247+ modifyAtIndices = unsafeAdapt '' A .modifyAtIndices
237248
238249sort :: forall a . Ord a => NonEmptyArray a -> NonEmptyArray a
239- sort = adapt A .sort
250+ sort = unsafeAdapt A .sort
240251
241252sortBy :: forall a . (a -> a -> Ordering ) -> NonEmptyArray a -> NonEmptyArray a
242- sortBy = adapt ' A .sortBy
253+ sortBy = unsafeAdapt ' A .sortBy
243254
244255sortWith :: forall a b . Ord b => (a -> b ) -> NonEmptyArray a -> NonEmptyArray a
245- sortWith = adapt ' A .sortWith
256+ sortWith = unsafeAdapt ' A .sortWith
246257
247258slice :: forall a . Int -> Int -> NonEmptyArray a -> Array a
248259slice = adaptAny'' A .slice
@@ -282,10 +293,10 @@ span = adaptAny' A.span
282293-- groupBy :: forall a. (a -> a -> Boolean) -> NonEmptyArray a -> NonEmptyArray (NonEmptyArray a)
283294
284295nub :: forall a . Eq a => NonEmptyArray a -> NonEmptyArray a
285- nub = adapt A .nub
296+ nub = unsafeAdapt A .nub
286297
287298nubBy :: forall a . (a -> a -> Boolean ) -> NonEmptyArray a -> NonEmptyArray a
288- nubBy = adapt ' A .nubBy
299+ nubBy = unsafeAdapt ' A .nubBy
289300
290301delete :: forall a . Eq a => a -> NonEmptyArray a -> Array a
291302delete = adaptAny' A .delete
0 commit comments