@@ -50,34 +50,29 @@ foreign import emptySTArray """
50
50
}" " " :: forall a h r . Eff (st :: ST h | r ) (STArray h a )
51
51
52
52
foreign import peekSTArrayImpl " " "
53
- function peekSTArrayImpl(arr, i, s, f ) {
53
+ function peekSTArrayImpl(just, nothing, arr, i ) {
54
54
return function() {
55
- var index = ~~i;
56
- if (0 <= index && index < arr.length) {
57
- return s(arr[index]);
58
- } else {
59
- return f;
60
- }
55
+ var index = i >>> 0;
56
+ return index < arr.length? just(arr[index]) : nothing;
61
57
};
62
- }" " " :: forall a h e r . Fn4 (STArray h a )
63
- Number
64
- (a -> r )
58
+ }" " " :: forall a h e r . Fn4 (a -> r )
65
59
r
60
+ (STArray h a )
61
+ Number
66
62
(Eff (st :: ST h | e ) r )
67
63
68
64
-- | Read the value at the specified index in a mutable array.
69
65
peekSTArray :: forall a h r . STArray h a -> Number -> Eff (st :: ST h | r ) (Maybe a )
70
- peekSTArray arr i = runFn4 peekSTArrayImpl arr i Just Nothing
66
+ peekSTArray = runFn4 peekSTArrayImpl Just Nothing
71
67
72
68
foreign import pokeSTArrayImpl " " "
73
69
function pokeSTArrayImpl(arr, i, a) {
74
70
return function() {
75
- var index = ~~i;
76
- if (0 <= index && index <= arr.length) {
71
+ var index = i >>> 0;
72
+ var ret = index < arr.length;
73
+ if (ret)
77
74
arr[index] = a;
78
- return true;
79
- }
80
- return false;
75
+ return ret;
81
76
};
82
77
}" " " :: forall a h e . Fn3 (STArray h a )
83
78
Number
@@ -86,7 +81,7 @@ foreign import pokeSTArrayImpl """
86
81
87
82
-- | Change the value at the specified index in a mutable array.
88
83
pokeSTArray :: forall a h r . STArray h a -> Number -> a -> Eff (st :: ST h | r ) Boolean
89
- pokeSTArray arr i a = runFn3 pokeSTArrayImpl arr i a
84
+ pokeSTArray = runFn3 pokeSTArrayImpl
90
85
91
86
foreign import pushAllSTArrayImpl " " "
92
87
function pushAllSTArrayImpl(arr, as) {
@@ -123,12 +118,10 @@ spliceSTArray = runFn4 spliceSTArrayImpl
123
118
foreign import copyImpl " " "
124
119
function copyImpl(arr) {
125
120
return function(){
126
- var as = [];
127
- var i = -1;
128
121
var n = arr.length;
129
- while(++i < n) {
122
+ var as = new Array(n);
123
+ for (var i = 0; i < n; i++)
130
124
as[i] = arr[i];
131
- }
132
125
return as;
133
126
};
134
127
}" " " :: forall a b h r . a -> Eff (st :: ST h | r ) b
@@ -146,12 +139,10 @@ thaw = copyImpl
146
139
foreign import toAssocArray " " "
147
140
function toAssocArray(arr) {
148
141
return function(){
149
- var as = [];
150
- var i = -1;
151
142
var n = arr.length;
152
- while(++i < n) {
143
+ var as = new Array(n);
144
+ for (var i = 0; i < n; i++)
153
145
as[i] = {value: arr[i], index: i};
154
- }
155
146
return as;
156
147
};
157
148
}" " " :: forall a h r . STArray h a -> Eff (st :: ST h | r ) [Assoc a ]
0 commit comments