File: prel.ml

package info (click to toggle)
ocaml-doc 3.09-1
  • links: PTS
  • area: non-free
  • in suites: etch, etch-m68k
  • size: 10,428 kB
  • ctags: 4,963
  • sloc: ml: 9,244; makefile: 2,413; ansic: 122; sh: 49; asm: 17
file content (32 lines) | stat: -rw-r--r-- 707 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
let index a =
  let rec index_rec i = function
    | []  -> raise Not_found
    | b :: l -> if a = b then i else index_rec (succ i) l in
  index_rec 0;;

let flat l = List.fold_left ( @) [] l;;

let subtract f l =
 match f, l with
 | f, [] -> f
 | f, e ->
    let rec subtract_e = function
      | [] -> []
      | elem :: l ->
         if List.mem elem e then subtract_e l else elem :: subtract_e l in
 subtract_e f
;;

let rec make_set = function
  | []  -> []
  | x :: l -> if List.mem x l then make_set l else x :: make_set l
;;

let except_nth =
  let rec except_n_l n = function
    | [] -> []
    | (elem :: l) -> if n = 0 then l else elem :: except_n_l (n - 1) l in
  fun l n -> except_n_l n l
;;