2020-06-04 09:54:25 +02:00

43 lines
853 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)
};