diff options
Diffstat (limited to 'lib/application')
-rwxr-xr-x | lib/application/application.ml | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/lib/application/application.ml b/lib/application/application.ml index 63e12ba..789bd80 100755 --- a/lib/application/application.ml +++ b/lib/application/application.ml @@ -12,18 +12,34 @@ [ type state = { value : int } - (** Increment the state *) + (** Increment the state. *) module Incr = struct type t = unit let update () state = { value = state.value + 1 } end + (** Decrement the state. *) + module Incr = struct + type t = unit + + let update () state = { value = state.value - 1 } + end + module App = Make(struct type t = state end) - (* Create the event itself *) + (* Create the events *) let incr_event = App.E ((), (module Incr:App.Event with type t = Incr.t)) + let decr_event = App.E ((), (module Decr:App.Event with type t = Decr.t)) + + let init = { value = 0 } in + (* Run the main loop *) + let state = App.run + init + (E.select + [ incr_event + ; decr_event ] ) in … ] *) |