summaryrefslogtreecommitdiff
path: root/src/Utilities.ml
blob: 84cbd6e9b360981126a689bb9d23d95d2efb439c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(* Split a list at a given index i (the first list contains all the elements
   up to element of index i, not included, the second one contains the remaining
   elements *)
let rec list_split_at (ls : 'a list) (i : int) =
  if i < 0 then raise (Invalid_argument "list_split_at take positive integers")
  else if i = 0 then ([], ls)
  else
    match ls with
    | [] ->
        raise
          (Failure
             "The int given to list_split_at should be <= the list's length")
    | x :: ls' ->
        let ls1, ls2 = list_split_at ls' (i - 1) in
        (x :: ls1, ls2)