2020-12-21 17:33:37 +01:00

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 ()