utop[9]> let sum_list l = let rec aux l s = match l with [] -> s | e :: t -> aux t (e + s) in aux l 0;; val sum_list : int list -> int = utop[10]> let l = List.tl (iota 11);; val l : int list = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10] utop[11]> sum_list l;; - : int = 55 utop[12]> List.fold_right;; - : ('a -> 'b -> 'b) -> 'a list -> 'b -> 'b = utop[14]> let sum_list l = List.fold_right ( + ) l 0;; val sum_list : int list -> int = utop[15]> ( + );; - : int -> int -> int = utop[16]> fun x y -> x + y;; - : int -> int -> int = utop[17]> 1 + 4;; - : int = 5 utop[18]> ( + );; - : int -> int -> int = utop[19]> List.fold_left;; - : ('a -> 'b -> 'a) -> 'a -> 'b list -> 'a = utop[20]> let sum_list l = List.fold_left ( + ) 0 l;; val sum_list : int list -> int = utop[21]> List.append;; - : 'a list -> 'a list -> 'a list = utop[22]> ( @ );; - : 'a list -> 'a list -> 'a list = utop[23]> let conc_list lists = List.fold_right ( @ ) lists [];; val conc_list : 'a list list -> 'a list = utop[24]> conc_list [[1;2]; [3;4]];; - : int list = [1; 2; 3; 4] utop[25]> let map f l = List.fold_right (fun e l -> f e :: l) l [];; val map : ('a -> 'b) -> 'a list -> 'b list = utop[26]> map (fun x -> x * x) l;; - : int list = [1; 4; 9; 16; 25; 36; 49; 64; 81; 100] utop[27]> l;; - : int list = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10] utop[28]>