Skip to content

Commit 0cdb221

Browse files
committed
add Belt.Array.t, Belt.Array.init
1 parent 0736160 commit 0cdb221

File tree

4 files changed

+123
-85
lines changed

4 files changed

+123
-85
lines changed

jscomp/others/belt_Array.ml

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@
1212
(***********************************************************************)
1313

1414
(* Array operations *)
15-
16-
external length: 'a array -> int = "%array_length"
17-
external size: 'a array -> int = "%array_length"
18-
external getUnsafe: 'a array -> int -> 'a = "%array_unsafe_get"
19-
external setUnsafe: 'a array -> int -> 'a -> unit = "%array_unsafe_set"
20-
external (.!()): 'a array -> int -> 'a = "%array_unsafe_get"
21-
external (.!()<-): 'a array -> int -> 'a -> unit = "%array_unsafe_set"
22-
external getUndefined: 'a array -> int -> 'a Js.undefined = "%array_unsafe_get"
23-
(* external get: 'a array -> int -> 'a = "%array_safe_get" *)
15+
type 'a t = 'a array
16+
external length: 'a t -> int = "%array_length"
17+
external size: 'a t -> int = "%array_length"
18+
external getUnsafe: 'a t -> int -> 'a = "%array_unsafe_get"
19+
external setUnsafe: 'a t -> int -> 'a -> unit = "%array_unsafe_set"
20+
external (.!()): 'a t -> int -> 'a = "%array_unsafe_get"
21+
external (.!()<-): 'a t -> int -> 'a -> unit = "%array_unsafe_set"
22+
external getUndefined: 'a t -> int -> 'a Js.undefined = "%array_unsafe_get"
23+
(* external get: 'a t -> int -> 'a = "%array_safe_get" *)
2424
let get arr i =
2525
if i >= 0 && i < length arr then Some arr.!(i) else None
2626
let getExn arr i =
@@ -34,12 +34,12 @@ let setExn arr i v =
3434
arr.!(i) <- v
3535

3636

37-
external truncateToLengthUnsafe : 'a array -> int -> unit = "length" [@@bs.set]
37+
external truncateToLengthUnsafe : 'a t -> int -> unit = "length" [@@bs.set]
3838
external makeUninitialized : int -> 'a Js.undefined array = "Array" [@@bs.new]
3939
external makeUninitializedUnsafe : int -> 'a array = "Array" [@@bs.new]
4040

4141

42-
external copy : 'a array -> (_ [@bs.as 0]) -> 'a array =
42+
external copy : 'a t -> (_ [@bs.as 0]) -> 'a t =
4343
"slice" [@@bs.send]
4444

4545

@@ -527,3 +527,12 @@ let joinWithU a sep toString =
527527
else aux (i + 1) (res ^ toString a.!(i) [@bs] ^ sep) in
528528
aux 0 ""
529529
let joinWith a sep toString = joinWithU a sep (fun [@bs] x -> toString x)
530+
531+
let initU n f =
532+
let v = makeUninitializedUnsafe n in
533+
for i = 0 to n - 1 do
534+
v.!(i) <- f i [@bs]
535+
done ;
536+
v
537+
538+
let init n f = initU n (fun[@bs] i -> f i )

0 commit comments

Comments
 (0)