@@ -50,34 +50,31 @@ foreign import emptySTArray """
5050 }" " " :: forall a h r . Eff (st :: ST h | r ) (STArray h a )
5151
5252foreign import peekSTArrayImpl " " "
53- function peekSTArrayImpl(arr, i, s, f ) {
53+ function peekSTArrayImpl(just, nothing, arr, i ) {
5454 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;
6158 };
62- }" " " :: forall a h e r . Fn4 (STArray h a )
63- Number
64- (a -> r )
59+ }" " " :: forall a h e r . Fn4 (a -> r )
6560 r
61+ (STArray h a )
62+ Number
6663 (Eff (st :: ST h | e ) r )
6764
6865-- | Read the value at the specified index in a mutable array.
6966peekSTArray :: 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
7168
7269foreign import pokeSTArrayImpl " " "
7370 function pokeSTArrayImpl(arr, i, a) {
7471 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)
7776 arr[index] = a;
78- return true;
79- }
80- return false;
77+ return ret;
8178 };
8279 }" " " :: forall a h e . Fn3 (STArray h a )
8380 Number
@@ -86,7 +83,7 @@ foreign import pokeSTArrayImpl """
8683
8784-- | Change the value at the specified index in a mutable array.
8885pokeSTArray :: 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
9087
9188foreign import pushAllSTArrayImpl " " "
9289 function pushAllSTArrayImpl(arr, as) {
@@ -123,12 +120,10 @@ spliceSTArray = runFn4 spliceSTArrayImpl
123120foreign import copyImpl " " "
124121 function copyImpl(arr) {
125122 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++)
130126 as[i] = arr[i];
131- }
132127 return as;
133128 };
134129 }" " " :: forall a b h r . a -> Eff (st :: ST h | r ) b
@@ -146,12 +141,10 @@ thaw = copyImpl
146141foreign import toAssocArray " " "
147142 function toAssocArray(arr) {
148143 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++)
153147 as[i] = {value: arr[i], index: i};
154- }
155148 return as;
156149 };
157150 }" " " :: forall a h r . STArray h a -> Eff (st :: ST h | r ) [Assoc a ]
0 commit comments