Skip to content

Commit 12080f2

Browse files
committed
Ext_list not depending on List
1 parent 4805832 commit 12080f2

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

jscomp/ext/ext_list.ml

+12-9
Original file line numberDiff line numberDiff line change
@@ -355,8 +355,15 @@ let init n f =
355355
| _ ->
356356
Array.to_list (Array.init n f)
357357

358+
let rec rev_append l1 l2 =
359+
match l1 with
360+
[] -> l2
361+
| a :: l -> rev_append l (a :: l2)
362+
363+
let rev l = rev_append l []
364+
358365
let rec small_split_at n acc l =
359-
if n <= 0 then List.rev acc , l
366+
if n <= 0 then rev acc , l
360367
else
361368
match l with
362369
| x::xs -> small_split_at (n - 1) (x ::acc) xs
@@ -368,7 +375,7 @@ let split_at l n =
368375
let rec split_at_last_aux acc x =
369376
match x with
370377
| [] -> invalid_arg "Ext_list.split_at_last"
371-
| [ x] -> List.rev acc, x
378+
| [ x] -> rev acc, x
372379
| y0::ys -> split_at_last_aux (y0::acc) ys
373380

374381
let split_at_last (x : 'a list) =
@@ -420,10 +427,6 @@ let rec rev_map_append l1 l2 f =
420427
| a :: l -> rev_map_append l (f a :: l2) f
421428

422429

423-
let rec rev_append l1 l2 =
424-
match l1 with
425-
[] -> l2
426-
| a :: l -> rev_append l (a :: l2)
427430

428431
(** It is not worth loop unrolling,
429432
it is already tail-call, and we need to be careful
@@ -487,7 +490,7 @@ and aux eq (x : 'a) (xss : 'a list list) : 'a list list =
487490
y :: aux eq x ys
488491
| _ :: _ -> assert false
489492

490-
let stable_group lst eq = group eq lst |> List.rev
493+
let stable_group lst eq = group eq lst |> rev
491494

492495
let rec drop h n =
493496
if n < 0 then invalid_arg "Ext_list.drop"
@@ -625,7 +628,7 @@ let rec assoc_by_string lst (k : string) def =
625628
| None -> assert false
626629
| Some x -> x end
627630
| (k1,v1)::rest ->
628-
if Ext_string.equal k1 k then v1 else
631+
if k1 = k then v1 else
629632
assoc_by_string rest k def
630633

631634
let rec assoc_by_int lst (k : int) def =
@@ -699,7 +702,7 @@ let rec fold_left2 l1 l2 accu f =
699702
match (l1, l2) with
700703
([], []) -> accu
701704
| (a1::l1, a2::l2) -> fold_left2 l1 l2 (f a1 a2 accu) f
702-
| (_, _) -> invalid_arg "List.fold_left2"
705+
| (_, _) -> invalid_arg "Ext_list.fold_left2"
703706

704707
let singleton_exn xs = match xs with [x] -> x | _ -> assert false
705708

0 commit comments

Comments
 (0)