Skip to content

Commit 4947531

Browse files
committed
clean up list as well
1 parent 14ae984 commit 4947531

15 files changed

+497
-313
lines changed

jscomp/others/.depend

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ bs_SetIntM.cmj : bs_internalSetInt.cmj bs_internalAVLset.cmj bs_SortInt.cmj \
2525
bs_Array.cmj bs_SetIntM.cmi
2626
bs_Hash.cmj : bs_Hash.cmi
2727
bs_Queue.cmj : bs_Array.cmj bs_Queue.cmi
28-
bs_List.cmj : js_json.cmj bs_Array.cmj bs_List.cmi
28+
bs_List.cmj : bs_Array.cmj bs_List.cmi
2929
bs_Sort.cmj : bs_Array.cmj bs_Sort.cmi
3030
bs_Range.cmj :
3131
bs_internalBucketsType.cmj : bs_Array.cmj bs_internalBucketsType.cmi

jscomp/others/bs_Array.ml

+18-14
Original file line numberDiff line numberDiff line change
@@ -33,29 +33,40 @@ external makeUninitialized : int -> 'a Js.undefined array = "Array" [@@bs.new]
3333
external makeUninitializedUnsafe : int -> 'a array = "Array" [@@bs.new]
3434

3535

36-
36+
let copy a =
37+
let l = length a in
38+
let v = makeUninitializedUnsafe l in
39+
for i = 0 to l - 1 do
40+
setUnsafe v i (getUnsafe a i)
41+
done ;
42+
v
3743

3844
let swapUnsafe xs i j =
3945
let tmp = getUnsafe xs i in
4046
setUnsafe xs i (getUnsafe xs j) ;
4147
setUnsafe xs j tmp
4248

43-
let shuffle xs =
49+
let shuffleInPlace xs =
4450
let len = length xs in
4551
for i = 0 to len - 1 do
4652
swapUnsafe xs i (Js_math.random_int i len) (* [i,len)*)
4753
done
4854

55+
let shuffle xs =
56+
let result = copy xs in
57+
shuffleInPlace result; (* TODO: improve*)
58+
result
59+
4960
let reverseAux xs ofs len =
5061
for i = 0 to len/2 - 1 do
5162
swapUnsafe xs (ofs + i) (ofs + len - i - 1)
5263
done
5364

54-
let reverse xs =
65+
let reverseInPlace xs =
5566
let len = length xs in
5667
reverseAux xs 0 len
5768

58-
let reverseCopy xs =
69+
let reverse xs =
5970
let len = length xs in
6071
let result = makeUninitializedUnsafe len in
6172
for i = 0 to len - 1 do
@@ -86,17 +97,10 @@ let makeBy l f =
8697

8798
let makeByAndShuffle l f =
8899
let u = makeBy l f in
89-
shuffle u ;
100+
shuffleInPlace u ;
90101
u
91102

92103

93-
let copy a =
94-
let l = length a in
95-
let v = makeUninitializedUnsafe l in
96-
for i = 0 to l - 1 do
97-
setUnsafe v i (getUnsafe a i)
98-
done ;
99-
v
100104

101105

102106
let zip xs ys =
@@ -327,7 +331,7 @@ let every2 a b p =
327331
else
328332
everyAux2 a b 0 p lena
329333

330-
let eq = every2
334+
let equalTo = every2
331335

332336
let rec everyCmpAux2 arr1 arr2 i b len =
333337
if i = len then 0
@@ -337,7 +341,7 @@ let rec everyCmpAux2 arr1 arr2 i b len =
337341
everyCmpAux2 arr1 arr2 (i + 1) b len
338342
else c
339343

340-
let cmp a b p =
344+
let compareTo a b p =
341345
let lena = length a in
342346
let lenb = length b in
343347
if lena > lenb then 1

jscomp/others/bs_Array.mli

+6-5
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,10 @@ external getUndefined: 'a array -> int -> 'a Js.undefined = "%array_unsafe_get"
2727
val getExn: 'a array -> int -> 'a
2828
external setUnsafe: 'a array -> int -> 'a -> unit = "%array_unsafe_set"
2929

30-
val shuffle: 'a array -> unit
31-
val reverse: 'a array -> unit
32-
val reverseCopy: 'a array -> 'a array
30+
val shuffleInPlace: 'a array -> unit
31+
val shuffle: 'a array -> 'a array
32+
val reverseInPlace: 'a array -> unit
33+
val reverse: 'a array -> 'a array
3334
external makeUninitialized: int -> 'a Js.undefined array = "Array" [@@bs.new]
3435
external makeUninitializedUnsafe: int -> 'a array = "Array" [@@bs.new]
3536

@@ -120,7 +121,7 @@ val every: 'a array -> ('a -> bool [@bs]) -> bool
120121
(** [every2 a b] return false when [length a <> length b] *)
121122
val every2: 'a array -> 'b array -> ('a -> 'b -> bool [@bs]) -> bool
122123

123-
val cmp: 'a array -> 'a array -> ('a -> 'a -> int [@bs]) -> int
124-
val eq: 'a array -> 'a array -> ('a -> 'a -> bool [@bs]) -> bool
124+
val compareTo: 'a array -> 'a array -> ('a -> 'a -> int [@bs]) -> int
125+
val equalTo: 'a array -> 'a array -> ('a -> 'a -> bool [@bs]) -> bool
125126

126127
external truncateToLengthUnsafe: 'a array -> int -> unit = "length" [@@bs.set]

0 commit comments

Comments
 (0)