@@ -36,7 +36,6 @@ module Data.HashMap.Array
36
36
, unsafeThaw
37
37
, unsafeSameArray
38
38
, run
39
- , run2
40
39
, copy
41
40
, copyM
42
41
@@ -210,11 +209,6 @@ length :: Array a -> Int
210
209
length ary = I # (sizeofArray# (unArray ary))
211
210
{-# INLINE length #-}
212
211
213
- -- | Smart constructor
214
- array :: Array # a -> Int -> Array a
215
- array ary _n = Array ary
216
- {-# INLINE array #-}
217
-
218
212
data MArray s a = MArray {
219
213
unMArray :: ! (MutableArray # s a )
220
214
}
@@ -223,11 +217,6 @@ lengthM :: MArray s a -> Int
223
217
lengthM mary = I # (sizeofMutableArray# (unMArray mary))
224
218
{-# INLINE lengthM #-}
225
219
226
- -- | Smart constructor
227
- marray :: MutableArray # s a -> Int -> MArray s a
228
- marray mary _n = MArray mary
229
- {-# INLINE marray #-}
230
-
231
220
------------------------------------------------------------------------
232
221
233
222
instance NFData a => NFData (Array a ) where
@@ -249,11 +238,11 @@ rnfArray ary0 = go ary0 n0 0
249
238
-- state thread, with each element containing the specified initial
250
239
-- value.
251
240
new :: Int -> a -> ST s (MArray s a )
252
- new n @ (I # n# ) b =
241
+ new (I # n# ) b =
253
242
CHECK_GT (" new" ,n,(0 :: Int ))
254
243
ST $ \ s ->
255
244
case newArray# n# b s of
256
- (# s', ary # ) -> (# s', marray ary n # )
245
+ (# s', ary # ) -> (# s', MArray ary # )
257
246
{-# INLINE new #-}
258
247
259
248
new_ :: Int -> ST s (MArray s a )
@@ -308,25 +297,19 @@ indexM ary _i@(I# i#) =
308
297
unsafeFreeze :: MArray s a -> ST s (Array a )
309
298
unsafeFreeze mary
310
299
= ST $ \ s -> case unsafeFreezeArray# (unMArray mary) s of
311
- (# s', ary # ) -> (# s', array ary (lengthM mary) # )
300
+ (# s', ary # ) -> (# s', Array ary # )
312
301
{-# INLINE unsafeFreeze #-}
313
302
314
303
unsafeThaw :: Array a -> ST s (MArray s a )
315
304
unsafeThaw ary
316
305
= ST $ \ s -> case unsafeThawArray# (unArray ary) s of
317
- (# s', mary # ) -> (# s', marray mary ( length ary) # )
306
+ (# s', mary # ) -> (# s', MArray mary # )
318
307
{-# INLINE unsafeThaw #-}
319
308
320
309
run :: (forall s . ST s (MArray s e )) -> Array e
321
310
run act = runST $ act >>= unsafeFreeze
322
311
{-# INLINE run #-}
323
312
324
- run2 :: (forall s . ST s (MArray s e , a )) -> (Array e , a )
325
- run2 k = runST (do
326
- (marr,b) <- k
327
- arr <- unsafeFreeze marr
328
- return (arr,b))
329
-
330
313
-- | Unsafely copy the elements of an array. Array bounds are not checked.
331
314
copy :: Array e -> Int -> MArray s e -> Int -> Int -> ST s ()
332
315
copy ! src ! _sidx@ (I # sidx# ) ! dst ! _didx@ (I # didx# ) _n@ (I # n# ) =
@@ -469,10 +452,10 @@ undefinedElem = error "Data.HashMap.Array: Undefined element"
469
452
{-# NOINLINE undefinedElem #-}
470
453
471
454
thaw :: Array e -> Int -> Int -> ST s (MArray s e )
472
- thaw ! ary ! _o@ (I # o# ) ! n @ (I # n# ) =
455
+ thaw ! ary ! _o@ (I # o# ) (I # n# ) =
473
456
CHECK_LE (" thaw" , _o + n, length ary)
474
457
ST $ \ s -> case thawArray# (unArray ary) o# n# s of
475
- (# s2, mary# # ) -> (# s2, marray mary# n # )
458
+ (# s2, mary# # ) -> (# s2, MArray mary# # )
476
459
{-# INLINE thaw #-}
477
460
478
461
-- | /O(n)/ Delete an element at the given position in this array,
0 commit comments