@@ -18,7 +18,6 @@ module Data.Array.ST
1818
1919import Control.Monad.Eff (Eff ())
2020import Control.Monad.ST (ST ())
21- import Data.Function (Fn2 (), runFn2 , Fn3 (), runFn3 , Fn4 (), runFn4 )
2221import Data.Maybe (Maybe (..))
2322
2423-- | A reference to a mutable array.
@@ -42,56 +41,34 @@ foreign import runSTArray :: forall a r. (forall h. Eff (st :: ST h | r) (STArra
4241-- | Create an empty mutable array.
4342foreign import emptySTArray :: forall a h r . Eff (st :: ST h | r ) (STArray h a )
4443
45- foreign import peekSTArrayImpl :: forall a h e r . Fn4 (a -> r )
46- r
47- (STArray h a )
48- Int
49- (Eff (st :: ST h | e ) r )
44+ -- | Create a mutable copy of an immutable array.
45+ thaw :: forall a h r . Array a -> Eff (st :: ST h | r ) (STArray h a )
46+ thaw = copyImpl
5047
51- -- | Read the value at the specified index in a mutable array.
52- peekSTArray :: forall a h r . STArray h a -> Int -> Eff (st :: ST h | r ) (Maybe a )
53- peekSTArray = runFn4 peekSTArrayImpl Just Nothing
48+ -- | Create an immutable copy of a mutable array.
49+ freeze :: forall a h r . STArray h a -> Eff (st :: ST h | r ) (Array a )
50+ freeze = copyImpl
5451
55- -- | Change the value at the specified index in a mutable array.
56- pokeSTArray :: forall a h r . STArray h a -> Int -> a -> Eff (st :: ST h | r ) Boolean
57- pokeSTArray = runFn3 pokeSTArrayImpl
52+ foreign import copyImpl :: forall a b h r . a -> Eff (st :: ST h | r ) b
5853
59- foreign import pokeSTArrayImpl :: forall a h e . Fn3 (STArray h a )
60- Int
61- a
62- (Eff (st :: ST h | e ) Boolean )
54+ -- | Read the value at the specified index in a mutable array.
55+ peekSTArray :: forall a h r . STArray h a -> Int -> Eff (st :: ST h | r ) (Maybe a )
56+ peekSTArray = peekSTArrayImpl Just Nothing
6357
64- -- | Append the values in an immutable array to the end of a mutable array.
65- pushAllSTArray :: forall a h r . STArray h a -> Array a -> Eff (st :: ST h | r ) Int
66- pushAllSTArray = runFn2 pushAllSTArrayImpl
58+ foreign import peekSTArrayImpl :: forall a h e r . (a -> r ) -> r -> (STArray h a ) -> Int -> (Eff (st :: ST h | e ) r )
6759
68- foreign import pushAllSTArrayImpl :: forall a h r . Fn2 (STArray h a )
69- (Array a )
70- (Eff (st :: ST h | r ) Int )
60+ -- | Change the value at the specified index in a mutable array.
61+ foreign import pokeSTArray :: forall a h r . STArray h a -> Int -> a -> Eff (st :: ST h | r ) Boolean
7162
7263-- | Append an element to the end of a mutable array.
7364pushSTArray :: forall a h r . STArray h a -> a -> Eff (st :: ST h | r ) Int
7465pushSTArray arr a = pushAllSTArray arr [a]
7566
76- -- | Remove and/or insert elements from/into a mutable array at the specified index.
77- spliceSTArray :: forall a h r . STArray h a -> Int -> Int -> Array a -> Eff (st :: ST h | r ) (Array a )
78- spliceSTArray = runFn4 spliceSTArrayImpl
79-
80- foreign import spliceSTArrayImpl :: forall a h r . Fn4 (STArray h a )
81- Int
82- Int
83- (Array a )
84- (Eff (st :: ST h | r ) (Array a ))
85-
86- -- | Create an immutable copy of a mutable array.
87- freeze :: forall a h r . STArray h a -> Eff (st :: ST h | r ) (Array a )
88- freeze = copyImpl
89-
90- -- | Create a mutable copy of an immutable array.
91- thaw :: forall a h r . Array a -> Eff (st :: ST h | r ) (STArray h a )
92- thaw = copyImpl
67+ -- | Append the values in an immutable array to the end of a mutable array.
68+ foreign import pushAllSTArray :: forall a h r . STArray h a -> Array a -> Eff (st :: ST h | r ) Int
9369
94- foreign import copyImpl :: forall a b h r . a -> Eff (st :: ST h | r ) b
70+ -- | Remove and/or insert elements from/into a mutable array at the specified index.
71+ foreign import spliceSTArray :: forall a h r . STArray h a -> Int -> Int -> Array a -> Eff (st :: ST h | r ) (Array a )
9572
9673-- | Create an immutable copy of a mutable array, where each element
9774-- | is labelled with its index in the original array.
0 commit comments