type storage = int * int list
type param = int list
let x : int list = []
let y : int list = [3; 4; 5]
let z : int list = 2::y
let main (p: param) storage =
let storage =
match p with
[] -> storage
| hd::tl -> storage.0 + hd, tl
in ([] : operation list), storage
let fold_op (s: int list) : int =
let aggregate = fun (prec: int) (cur: int) -> prec + cur
in List.fold aggregate s 10
let map_op (s: int list) : int list =
List.map (fun (cur: int) -> cur + 1) s
let iter_op (s : int list) : unit =
let do_nothing = fun (_: int) -> unit
in List.iter do_nothing s