@@ -18,7 +18,6 @@ module Data.Array.ST
18
18
19
19
import Control.Monad.Eff (Eff ())
20
20
import Control.Monad.ST (ST ())
21
- import Data.Function (Fn2 (), runFn2 , Fn3 (), runFn3 , Fn4 (), runFn4 )
22
21
import Data.Maybe (Maybe (..))
23
22
24
23
-- | A reference to a mutable array.
@@ -42,56 +41,34 @@ foreign import runSTArray :: forall a r. (forall h. Eff (st :: ST h | r) (STArra
42
41
-- | Create an empty mutable array.
43
42
foreign import emptySTArray :: forall a h r . Eff (st :: ST h | r ) (STArray h a )
44
43
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
50
47
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
54
51
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
58
53
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
63
57
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 )
67
59
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
71
62
72
63
-- | Append an element to the end of a mutable array.
73
64
pushSTArray :: forall a h r . STArray h a -> a -> Eff (st :: ST h | r ) Int
74
65
pushSTArray arr a = pushAllSTArray arr [a]
75
66
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
93
69
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 )
95
72
96
73
-- | Create an immutable copy of a mutable array, where each element
97
74
-- | is labelled with its index in the original array.
0 commit comments