45 lines
940 B
OCaml
45 lines
940 B
OCaml
let () = print_endline "Lists:"
|
|
|
|
let rec iter f l =
|
|
match l with
|
|
| [] -> ()
|
|
| x :: l ->
|
|
f x; iter f l
|
|
|
|
let print_list l =
|
|
print_string "["; iter show_int l; print_string "]"
|
|
|
|
let () = print_list [1; 2; 3; 4; 5; 6; 7; 8; 9]
|
|
|
|
let () = print_newline ()
|
|
|
|
let rec iter_sep f sep l =
|
|
match l with
|
|
| [] -> ()
|
|
| [x] ->
|
|
f x
|
|
(* this function is an excuse to test literral patterns
|
|
[p1; p2; ...; pn] *)
|
|
| [x0; x1] ->
|
|
f x0; sep (); f x1
|
|
| x :: l ->
|
|
f x; sep (); iter_sep f sep l
|
|
|
|
let print_list l =
|
|
print_string "["; iter_sep show_int (fun () -> print_string ";") l; print_string "]"
|
|
|
|
let () = print_list [1; 2; 3; 4; 5; 6; 7; 8; 9]
|
|
|
|
let () = print_newline ()
|
|
|
|
let rec map f l =
|
|
match l with
|
|
| [] -> []
|
|
| x :: l -> f x :: map f l
|
|
|
|
let () = print_list (map (fun x -> x + 1) [1; 2; 3; 4; 5; 6; 7; 8; 9])
|
|
|
|
let () = print_list (map (fun (x, y) -> x + y) [(1, 1); (2, 2); (3, 3)])
|
|
|
|
let () = print_newline ()
|