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