@@ -50,34 +50,29 @@ 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+ return index < arr.length? just(arr[index]) : nothing;
6157 };
62- }" " " :: forall a h e r . Fn4 (STArray h a )
63- Number
64- (a -> r )
58+ }" " " :: forall a h e r . Fn4 (a -> r )
6559 r
60+ (STArray h a )
61+ Number
6662 (Eff (st :: ST h | e ) r )
6763
6864-- | Read the value at the specified index in a mutable array.
6965peekSTArray :: 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
7167
7268foreign import pokeSTArrayImpl " " "
7369 function pokeSTArrayImpl(arr, i, a) {
7470 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)
7774 arr[index] = a;
78- return true;
79- }
80- return false;
75+ return ret;
8176 };
8277 }" " " :: forall a h e . Fn3 (STArray h a )
8378 Number
@@ -86,7 +81,7 @@ foreign import pokeSTArrayImpl """
8681
8782-- | Change the value at the specified index in a mutable array.
8883pokeSTArray :: 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
9085
9186foreign import pushAllSTArrayImpl " " "
9287 function pushAllSTArrayImpl(arr, as) {
@@ -123,12 +118,10 @@ spliceSTArray = runFn4 spliceSTArrayImpl
123118foreign import copyImpl " " "
124119 function copyImpl(arr) {
125120 return function(){
126- var as = [];
127- var i = -1;
128121 var n = arr.length;
129- while(++i < n) {
122+ var as = new Array(n);
123+ for (var i = 0; i < n; i++)
130124 as[i] = arr[i];
131- }
132125 return as;
133126 };
134127 }" " " :: forall a b h r . a -> Eff (st :: ST h | r ) b
@@ -146,12 +139,10 @@ thaw = copyImpl
146139foreign import toAssocArray " " "
147140 function toAssocArray(arr) {
148141 return function(){
149- var as = [];
150- var i = -1;
151142 var n = arr.length;
152- while(++i < n) {
143+ var as = new Array(n);
144+ for (var i = 0; i < n; i++)
153145 as[i] = {value: arr[i], index: i};
154- }
155146 return as;
156147 };
157148 }" " " :: forall a h r . STArray h a -> Eff (st :: ST h | r ) [Assoc a ]
0 commit comments