34 lines
785 B
Plaintext
34 lines
785 B
Plaintext
type storage = (int, list (int));
|
|
|
|
type parameter = list (int);
|
|
|
|
type return = (list (operation), storage);
|
|
|
|
let x : list (int) = [];
|
|
let y : list (int) = [3, 4, 5];
|
|
let z : list (int) = [2, ...y];
|
|
|
|
let main = ((action, s) : (parameter, storage)) : return => {
|
|
let storage =
|
|
switch (action) {
|
|
| [] => s
|
|
| [hd, ...tl] => (s[0] + hd, tl)
|
|
};
|
|
([]: list(operation), storage);
|
|
};
|
|
|
|
let size_ = (s : list (int)) : nat => List.length (s);
|
|
|
|
let fold_op = (s : list (int)) : int => {
|
|
let aggregate = (t: (int, int)) => t[0] + t[1];
|
|
List.fold (aggregate, s, 10);
|
|
};
|
|
|
|
let map_op = (s : list (int)) : list (int) =>
|
|
List.map ((cur : int) => cur + 1, s);
|
|
|
|
let iter_op = (s : list (int)) : unit => {
|
|
let do_nothing = (useless : int) => unit;
|
|
List.iter (do_nothing, s);
|
|
};
|