27 lines
644 B
Plaintext
27 lines
644 B
Plaintext
|
type storage = int;
|
||
|
|
||
|
type parameter =
|
||
|
Increment (int)
|
||
|
| Decrement (int)
|
||
|
| Reset;
|
||
|
|
||
|
type return = (list (operation), storage);
|
||
|
|
||
|
(* Two entrypoints *)
|
||
|
|
||
|
let add = ((store, delta) : (storage, int)) : storage => store + delta;
|
||
|
|
||
|
let sub = ((store, delta) : (storage, int)) : storage => store - delta;
|
||
|
|
||
|
(* Main access point that dispatches to the entrypoints according to
|
||
|
the smart contract parameter. *)
|
||
|
|
||
|
let main = ((action, store) : (parameter, storage)) : return => {
|
||
|
(([] : list (operation)), // No operations
|
||
|
(switch (action) {
|
||
|
| Increment (n) => add ((store, n))
|
||
|
| Decrement (n) => sub ((store, n))
|
||
|
| Reset => 0
|
||
|
}))
|
||
|
};
|