2020-01-20 19:42:22 -08:00
|
|
|
(* IF YOU CHANGE THIS, CHANGE THE EXAMPLE ON THE FRONT PAGE OF THE WEBSITE *)
|
|
|
|
|
2019-12-10 13:47:31 +00:00
|
|
|
type storage = int;
|
|
|
|
|
|
|
|
/* variant defining pseudo multi-entrypoint actions */
|
|
|
|
|
|
|
|
type action =
|
|
|
|
| Increment(int)
|
|
|
|
| Decrement(int);
|
|
|
|
|
2020-01-21 14:49:42 -08:00
|
|
|
let add = ((a,b): (int, int)): int => a + b;
|
|
|
|
let sub = ((a,b): (int, int)): int => a - b;
|
2019-12-10 13:47:31 +00:00
|
|
|
|
|
|
|
/* real entrypoint that re-routes the flow based on the action provided */
|
|
|
|
|
2020-01-21 14:49:42 -08:00
|
|
|
let main = ((p,storage): (action, storage)) => {
|
2019-12-10 13:47:31 +00:00
|
|
|
let storage =
|
|
|
|
switch (p) {
|
2020-01-21 14:49:42 -08:00
|
|
|
| Increment(n) => add((storage, n))
|
|
|
|
| Decrement(n) => sub((storage, n))
|
2019-12-10 13:47:31 +00:00
|
|
|
};
|
|
|
|
([]: list(operation), storage);
|
|
|
|
};
|
2020-01-08 20:58:26 +00:00
|
|
|
|
2020-01-20 19:42:22 -08:00
|
|
|
(* IF YOU CHANGE THIS, CHANGE THE EXAMPLE ON THE FRONT PAGE OF THE WEBSITE *)
|