24 lines
599 B
Plaintext
24 lines
599 B
Plaintext
|
type storage = int
|
||
|
|
||
|
type parameter =
|
||
|
Increment of int
|
||
|
| Decrement of int
|
||
|
| Reset
|
||
|
|
||
|
type return = operation list * 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 =
|
||
|
([] : operation list), // No operations
|
||
|
(match action with
|
||
|
Increment (n) -> add (store, n)
|
||
|
| Decrement (n) -> sub (store, n)
|
||
|
| Reset -> 0)
|